1. 点亮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. 模式寄存器位设置是否与数据手册一致(不同型号可能位宽不同)。
判定标准
LED实际点亮即为通过。若使用示波器测量PB2引脚,应观察到约0V的低电平输出。程序运行后无异常复位或死机现象。