1. 点亮LED

点亮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));
    }
}

编译与下载

  1. 使用MounRiver Studio(MRS)创建CH32V103工程,将上述代码替换main.c内容;
  2. 工程需包含CH32V10x标准外设库(ch32v10x.h及相应源文件);
  3. 通过WCH-Link连接开发板,在MRS中点击"下载"按钮烧录程序。

验证方法

程序烧录后复位开发板,观察板载LED是否以约1Hz频率(每500ms翻转一次)闪烁。若LED持续点亮、完全不亮或闪烁频率明显异常,检查GPIO引脚编号是否与板卡实际连接一致,以及延时函数是否正常工作。