1. 点亮LED灯

点亮LED灯 学习卡片

任务说明

本案例目标是在中微CMS32系列车规MCU上,通过配置GPIO为推挽输出模式,控制一个LED灯点亮。你需要完成:初始化GPIO时钟、配置引脚为输出模式、将引脚电平拉低(或拉高,取决于LED硬件接法)以点亮LED。最终通过观察LED实际点亮来验证程序是否正确。

硬件连接

假设LED正极通过限流电阻(约330Ω)连接至MCU的PB2引脚,LED负极接地。当PB2输出低电平时,LED导通点亮;输出高电平时熄灭。请根据实际开发板原理图调整引脚编号和电平逻辑。

代码实现


#include "CMS32L051.h"

void Delay(void)
{
    volatile uint32_t i;
    for (i = 0; i < 200000; i++);
}

int main(void)
{
    /* 使能GPIOB时钟 */
    CLK_EnablePeripheralClock(CLK_PERIPH_GPIOB);
    
    /* 配置PB2为推挽输出模式 */
    GPIOB->MODE &= ~(0x3U << (2 * 2));   // 清除PB2模式位
    GPIOB->MODE |= (0x1U << (2 * 2));    // 设为输出模式
    
    /* 配置PB2为推挽输出(非开漏) */
    GPIOB->OD &= ~(0x1U << 2);           // 清除开漏使能位
    
    while (1)
    {
        /* 输出低电平点亮LED */
        GPIOB->DATA &= ~(0x1U << 2);
        Delay();
    }
}

代码说明

上述代码首先使能GPIOB外设时钟。然后通过修改MODE寄存器将PB2配置为输出模式,并清除OD寄存器中对应位以确保使用推挽输出(而非开漏)。在主循环中持续将PB2数据位清零,使引脚输出低电平,从而点亮LED。Delay函数仅用于演示,实际应用中可根据需求调整或移除。

编译与烧录

使用中微官方提供的CMS32开发环境(如中微集成开发环境或Keil MDK搭配对应器件支持包)创建工程,将上述代码放入main.c中。编译无误后,通过调试器(如CMS-ICE)将生成的hex文件烧录至目标板。

验证方法

烧录完成后,给开发板上电并复位。观察连接在PB2引脚上的LED是否点亮。若LED正常发光,则说明GPIO配置和输出控制正确,案例通过。若LED不亮,请检查:
1. 硬件连接是否正确(引脚号、LED极性、限流电阻);
2. 时钟使能寄存器配置是否正确;
3. 模式寄存器位设置是否与数据手册一致(不同型号可能位宽不同)。

CMS32L051 MCU PB2 330Ω LED GND GPIO输出低电平点亮LED 低电平

判定标准

LED实际点亮即为通过。若使用示波器测量PB2引脚,应观察到约0V的低电平输出。程序运行后无异常复位或死机现象。