打印
[RISC-V MCU 应用开发]

【RISC-V MCU CH32V103测评】流水灯程序测试

[复制链接]
4747|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 hbzjt2011 于 2020-12-7 20:15 编辑

         熟悉了CH32V103处理器在MounRiver Studio下的开发流程以后,开始利用评估板上的外设和硬件资源进行程序的编写。首先评估板上自带两个LED灯,可以用来做流水灯和PWM呼吸灯。

         在已有的程序结构中添加Hardware->LED文件夹,同时将LED.c源文件和led.h头文件增加到项目中。同时需要将头文件路径添加到头文件目录中,在MounRiver Studio软件中的构建设置中增加LED目录。




然后分别在led.c中编写LED端口初始化程序,包括控制端口时钟使能以及端口参数设置;在头文件中增加函数原型声明和相关的宏定义。
led.c文件:
#include "led.h"

void LED_Init(void)
{

GPIO_InitTypeDef  GPIO_InitStructure;                      //定义一个GPIO_InitTypeDef类型的结构体

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);      //使能与LED相关的GPIO端口时钟

GPIO_InitStructure.GPIO_Pin = LED1_PIN | LED2_PIN;       //配置GPIO引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;           //设置GPIO模式为推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;          //设置GPIO口输出速度
GPIO_Init(LED_PORT, &GPIO_InitStructure);                     //调用库函数,初始化GPIOA

GPIO_SetBits(LED_PORT,LED1_PIN | LED2_PIN);                 //设置引脚输出高电平

}
led.h文件:
#ifndef __LED_H
#define __LED_H

#include "ch32v10x_conf.h"

#define LED_PORT GPIOA
#define LED1_PIN GPIO_Pin_0
#define LED2_PIN GPIO_Pin_1

#define LED1_ON  (GPIO_WriteBit(LED_PORT, LED1_PIN, Bit_RESET))
#define LED1_OFF (GPIO_WriteBit(LED_PORT, LED1_PIN, Bit_SET))

#define LED2_ON  (GPIO_WriteBit(LED_PORT, LED2_PIN, Bit_RESET))
#define LED2_OFF (GPIO_WriteBit(LED_PORT, LED2_PIN, Bit_SET))

#define LED1_Toggle (GPIO_WriteBit(LED_PORT, LED1_PIN, (1-GPIO_ReadOutputDataBit(LED_PORT, LED1_PIN))))
#define LED2_Toggle (GPIO_WriteBit(LED_PORT, LED2_PIN, (1-GPIO_ReadOutputDataBit(LED_PORT, LED2_PIN))))

void LED_Init(void);  //初始化

#endif
main.c文件:
int main(void)
{
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
    Delay_Init();
        USART_Printf_Init(115200);
        printf("SystemClk:%d\r\n",SystemCoreClock);

        printf("This is printf example\r\n");

        LED_Init();

        LED1_ON;
        LED2_OFF;

        while(1)
    {
            LED1_Toggle;
            LED2_Toggle;
            Delay_Ms(500);
        }
}
对编写完成后的程序进行编译和下载到开发板验证,效果如下。





使用特权

评论回复

相关帖子

沙发
kiwis66| | 2021-6-22 09:31 | 只看该作者
LED1_Toggle这个宏定义不错

使用特权

评论回复
板凳
tail066| | 2021-7-3 13:55 | 只看该作者
恩,我其实也想玩玩CH的片子

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:欢迎参与LabVIEW版块的讨论学习! 点我一键即达

157

主题

2338

帖子

41

粉丝