[RISC-V MCU 应用开发] 沁恒CH32V317W实现LED点灯

[复制链接]
113|1
DawnFervor 发表于 2025-10-27 21:51 | 显示全部楼层 |阅读模式

沁恒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的没有太大的区别。

cooleaf 发表于 2025-10-28 09:51 | 显示全部楼层
中间没有延时么?这样能看见闪烁??
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

38

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部