CH573-01-GPIO-LED——RISC-V内核BLE MCU快速开发教程

在这里插入图片描述

1. 新建工程

  1) NEW Project

    点击“File->New->MounRiver Project”:


  2) finish

    选择CH573F的裸机开发工程模板,如下图,然后点击“finish”


  3) 编译检查


  4) 精简代码

    打开工程目录下的./src/main.c文件,修改删掉生成的串口测试相关代码,仅保留最简代码,如下图:
在这里插入图片描述

2. GPIO输出相关API

  1) GPIO引脚配置API

void GPIO{x}_ModeCfg(uint32_t pin, GPIOModeTypeDef mode);

    打开目录“.\StdPeriphDriver\”下的“CH573_gipio.c”文件:
在这里插入图片描述

    在上述文件中可以找到“GPIO{x}_ModeCfg”函数,GPIO{x}_ModeCfg 函数用于完成GPIO{x}端口引脚模式配置,其中:
  {x}为端口选择,如A\B\C等;
  pin为引脚编号,如GPIO_Pin_0、GPIO_Pin_1等
  mode为引脚模式,包括:


    文件中还有引脚中断模式配置等API,不在此处讲解,后续中断实验中会进行具体描述。

  2) GPIO输出高低电平API

    a) 打开目录“.\StdPeriphDriver\”下的“CH573_gipio.h”文件

在这里插入图片描述

    b) GPIO{x}_SetBits(pin)/ GPIO{x}_ResetBits(pin)

    示例:

GPIOA_SetBits(GPIO_Pin_0);

   宏定义封装了GPIO的高低电平控制的API:GPIO{x}_ResetBits(pin);和GPIO{x}_SetBits(pin);

//设置高电平:
GPIOA_SetBits(LED_PIN);
//设置低电平
GPIOA_ResetBits(LED_PIN);

    c) GPIO{x}_InverseBits(pin);翻转电平信号输出

GPIOA_InverseBits(LED_PIN);

    d) 使用方法

   控制GPIO的高低电平的输出,只要初始化端口然后直接控制输出高低电平即可,如:

GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeOut_PP_5mA);//推挽输出最大5mA
GPIOA_SetBits(GPIO_Pin_8);//设置高电平

3. 查看LED引脚

  打开目录“.\开发板资料\WeActStudio.WCH-BLE-Core\HDK”下的开发板原理图:
在这里插入图片描述
在这里插入图片描述


  可知LED接在PA8引脚上,且低电平点亮。

4. 闪烁LED代码

/********************************** (C) COPYRIGHT *******************************
 * File Name          : Main.c
 * Author             : FUNIOT.XYZ
 * Version            : V1.0
 * Date               : 2020/08/06
 * Description        : 实验01-LED闪烁
 * Copyright          : WeChat official accounts "IOT趣制作"
 * SPDX-License-Identifier: Apache-2.0
 *******************************************************************************/

#include "CH57x_common.h"

/*********************************************************************
 * @fn      main
 *
 * @brief   主函数
 *
 * @return  none
 */
int main()
{
	//时钟初始化
    SetSysClock(CLK_SOURCE_PLL_60MHz);
    //LED初始化
    GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeOut_PP_5mA);//推挽输出最大5mA
    while(1)
    {
        GPIOA_ResetBits(GPIO_Pin_8); //LED点亮
        DelayMs(500);					//持续0.5s
        GPIOA_SetBits(GPIO_Pin_8); 	//LED熄灭
        DelayMs(500);					//持续0.5s
		//也可以使用下面的翻转达到闪烁的目的
//GPIOA_InverseBits(LED_PIN);//翻转电平信号,使LED状态与原状态相反
//DelayMs(500);				//持续0.5s
    }
}

5. 编译烧录运行

  1) 打开下载工具

点击Tools->WCH In-System Programmer:


  在自动打开的窗口中的MCU系列选择中选择“32位低功耗蓝牙系列 CH57x-CH58x”:


##   2) 进入烧录模式     重复步骤1:开发板连接type-c数据线,然后按下BOOT0/B22键后接入电脑完成上电,依旧保持长按,等待几秒后松开,进入烧录模式:

  3) 下载程序文件

    a) 查看程序文件位置

    进入路径“.\ MounRiver_Studio\workspace\CH573F_00_template\obj”可以看到hex文件:


    b) 选择文件

    点击目标程序文件的浏览按钮,选中上述的HEX文件路径:


    c) 进入下载模式后点击下载


  3) 运行

        烧录后按下复位,现象:LED交替闪烁


6. 修改为驱动库C和H文件模式

  在上文中我们已经实现了LED的基本使用,为了便于以后驱动的管理和移植,我们将LED的驱动配置为C和H文件模式

  1) 新建个人驱动文件夹MyDriver


  2) 新建led.h

在这里插入图片描述

  3) 新建led.c


  4) 添加驱动库路径

    a) 工程右键,单击“Properties”


    b) 在打开的窗口中按下图添加驱动库文件夹的路径

在这里插入图片描述

  5) 补充代码

    a) led.h

/*
 * led.h
 *
 *  Created on: Mar 7, 2023
 *      Author: funiot.xyz
 */

#ifndef MYDRIVER_LED_H_
#define MYDRIVER_LED_H_

//头文件包含区

/***************************************************/
//宏定义区
#define LED_PIN     GPIO_Pin_8
//端口修改请去LED_init()实体区进行调整

/***************************************************/
//变量声明区

/***************************************************/
//函数声明区
void LED_init(void);
void LED_turnon(void);
void LED_turnoff(void);
void LED_Toggle(void);
/***************************************************/

#endif /* MYDRIVER_LED_H_ */

    b) led.c

/* led.c
 *  Created on: Mar 7, 2023
 *      Author: funiot.xyz*/
//头文件包含区
#include "led.h"
#include "CH57x_common.h"
/***************************************************/
//宏定义区
/***************************************************/
//变量声明区
/***************************************************/
//函数声明区
/***************************************************/
//函数实体区
/*
 * 函数名:LED_init
 * 参数:无
 * 返回值:无
 * 功能说明:LED初始化
 */
void LED_init(void)
{
    GPIOA_ModeCfg(LED_PIN, GPIO_ModeOut_PP_5mA);//推挽输出最大5mA
}
/*
 * 函数名:LED_turnon
 * 参数:无
 * 返回值:无
 * 功能说明:点亮LED(低电平)
 */
void LED_turnon(void)
{
    GPIOA_ResetBits(LED_PIN);
}
/*
 * 函数名:LED_turnff
 * 参数:无
 * 返回值:无
 * 功能说明:关闭LED(高电平)
 */
void LED_turnoff(void)
{
    GPIOA_SetBits(LED_PIN);
}
/*
 * 函数名:LED_Toggle
 * 参数:无
 * 返回值:无
 * 功能说明:翻转LED电平
 */
void LED_Toggle(void)
{
    GPIOA_InverseBits(LED_PIN);
}

/***************************************************/

    c) main.c

/********************************** (C) COPYRIGHT *******************************
 * File Name          : Main.c
 * Author             : FUNIOT.XYZ
 * Version            : V1.0
 * Date               : 2020/08/06
 * Description        : 实验01-LED闪烁
 * Copyright          : WeChat official accounts "IOT趣制作"
 * SPDX-License-Identifier: Apache-2.0
 *******************************************************************************/
#include "CH57x_common.h"
#include "led.h"
/*********************************************************************
 * @fn      main
 *
 * @brief   主函数
 * @return  none
 */
int main()
{
    SetSysClock(CLK_SOURCE_PLL_60MHz);
    LED_init();//LED初始化
    while(1)
    {
        LED_turnon();	//LED初始化
        DelayMs(500); //持续500ms
        LED_turnoff();//LED初始化
        DelayMs(500); //持续500ms
		//或者直接使用LED_Toggle();
// LED_Toggle();//翻转LED电平
// DelayMs(500); //持续500ms

    }
}
 

  6) 编译烧录运行

    a) 编译


    b) 烧录

在这里插入图片描述

    c) 运行

    现象:LED交替闪烁,与未使用驱动库时的现象一致:


  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
RISC-V架构是一种开放源代码指令集架构,它被设计为一个可扩展的架构,适用于各种不同的应用场景。在嵌入式开发中,RISC-V架构可以提供高性能的处理能力,并且可以帮助用户降低开发成本和加速产品上市时间。本文将介绍如何快速入门RISC-V架构与嵌入式开发。 第一步:了解RISC-V架构 在开始使用RISC-V架构进行嵌入式开发之前,需要先了解一些RISC-V架构的基础知识。RISC-V架构是一个开放源代码的指令集架构,它提供了一系列的基本指令和扩展指令,可以根据不同的应用场景进行扩展。RISC-V架构支持32位和64位的指令集,并且可以通过配置实现不同的执行单元和内存管理方式。 第二步:选择开发板 选择一个适合自己的开发板是进行嵌入式开发的第一步。目前市面上已经有一些支持RISC-V架构的开发板,例如SiFive的HiFive1和HiFive Unleashed,以及GD32VF103系列等。选择开发板时需要考虑自己的应用场景和开发需求,并且需要了解开发板的硬件规格和外设接口。 第三步:安装开发环境 在开始进行嵌入式开发之前,需要先安装相应的开发环境。RISC-V架构可以使用GNU工具链进行编译和调试,其中包括GCC编译器、GDB调试器等。此外,还需要安装适合自己开发板的驱动程序和工具,例如OpenOCD调试器、串口调试工具等。 第四步:编写代码 在安装好开发环境之后,就可以开始编写代码了。在编写代码时需要根据自己的应用场景选择适合的编程语言和API。RISC-V架构支持多种编程语言,例如C语言、C++语言、汇编语言等。同时也提供了一些基本的API,例如GPIO控制、UART通信等。 第五步:编译和烧录 完成代码编写之后,需要将代码编译成可执行文件,并将其烧录到开发板中进行运行。在编译时需要根据开发板的硬件规格和应用场景进行编译选项的配置。在烧录过程中需要使用相应的工具进行烧录操作,例如OpenOCD调试器、JTAG接口等。 第六步:调试和优化 在代码烧录到开发板之后,需要进行调试和优化。调试过程中需要使用GDB调试器进行调试,以检查代码的正确性和性能。在优化过程中需要根据应用场景和性能需求进行优化,例如使用更高效的算法、优化存储器使用等。 总结 RISC-V架构是一种开放源代码的指令集架构,可以为嵌入式开发提供高性能和可扩展性的支持。在进行嵌入式开发时,需要选择适合自己的开发板和开发环境,编写相应的代码,并进行编译、烧录、调试和优化。通过以上步骤,可以快速入门RISC-V架构与嵌入式开发

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IOT趣制作

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值