沁恒CH32V317W实现LED点灯
拿到开发板的第一件事肯定是LED点灯实验了。
沁恒CH32V317W开发板是一块基于青稞RISC-V内核的通用MCU。主频最高可达144MHz,性能十分强劲。再强劲的MCU,也要从GPIO操作开始。
打开MounRiver开发环境,选择CH32V317W型号后,IDE自动为我们新建工程。我们初始化PC0引脚,做为了控制LED的GPIO引脚。根据原理图所示,使用PC0的开漏输出模式,当LED点亮时,电流灌入MCU的PC0引脚。又因为只是让LED闪烁,所以也没有强驱动输出的要求,这里也把GPIO的引脚驱动能力配置为2MHz的低速模式。
void led_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure = {0};
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
}
因为驱动LED点亮的方式是开漏模式,所以当我们对PC0置高时,LED灯为灭灯状态。当PC0拉低时,LED灯为点亮状态。所以,我们的控制LED亮灭的方式相当简单了。
while(1)
{
GPIO_SetBits(GPIOC, GPIO_Pin_0); /* 灭灯 */
GPIO_ResetBits(GPIOC, GPIO_Pin_0); /* 亮灯 */
GPIO_SetBits(GPIOC, GPIO_Pin_0); /* 灭灯 */
GPIO_ResetBits(GPIOC, GPIO_Pin_0); /* 亮灯 */
}
编译,下载,单步调试即可看到LED灯按照预定操作亮灭亮灭了。
在使用MounRiver开发沁恒CH32V317的代码时,也没有发现其为RISC-V内核有啥特殊的。感觉和开发ARM的没有太大的区别。