1. 点亮LED
任务目标
在CH32V103开发板上,通过GPIO输出功能控制板载LED以约1Hz频率闪烁,验证开发环境搭建正确并掌握最基本的GPIO操作流程。
硬件连接与原理
板载LED通常连接在PC13引脚(以官方评估板为例),高电平点亮。CH32V103的GPIO操作与STM32F103基本兼容,需依次完成:开启GPIO时钟、配置引脚为推挽输出、设置输出电平。
完整代码
// main.c - CH32V103 LED闪烁
#include "ch32v10x.h"
void Delay_Init(void);
void Delay_Ms(uint32_t ms);
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
// 1. 开启GPIOC时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
// 2. 配置PC13为推挽输出,最大翻转频率2MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
Delay_Init();
while(1)
{
GPIO_SetBits(GPIOC, GPIO_Pin_13); // 点亮LED
Delay_Ms(500);
GPIO_ResetBits(GPIOC, GPIO_Pin_13); // 熄灭LED
Delay_Ms(500);
}
}
// 使用系统滴答定时器实现毫秒延时
void Delay_Init(void)
{
SysTick_Config(SystemCoreClock / 1000);
}
void Delay_Ms(uint32_t ms)
{
uint32_t i;
for(i = 0; i < ms; i++)
{
while(!(SysTick->CTLR & SysTick_CTLR_COUNTFLAG));
}
}
编译与下载
- 使用MounRiver Studio(MRS)创建CH32V103工程,将上述代码替换main.c内容;
- 工程需包含CH32V10x标准外设库(ch32v10x.h及相应源文件);
- 通过WCH-Link连接开发板,在MRS中点击"下载"按钮烧录程序。
验证方法
程序烧录后复位开发板,观察板载LED是否以约1Hz频率(每500ms翻转一次)闪烁。若LED持续点亮、完全不亮或闪烁频率明显异常,检查GPIO引脚编号是否与板卡实际连接一致,以及延时函数是否正常工作。