STM32寄存器点灯|计算机三级嵌入式入门实操
1. 引言计算机三级嵌入式系统开发考试中GPIO控制是最基础的实操考点之一。本文以STM32F103系列为例通过直接操作寄存器实现LED点灯帮助考生理解底层硬件控制原理。2. 硬件准备本次实验所需硬件如下STM32F103C8T6最小系统板或任意STM32F103开发板LED灯珠通常板载PC13或PB0引脚杜邦线若干ST-Link下载器3. 寄存器基础STM32的GPIO操作主要涉及以下寄存器GPIOx_CRL/CRH端口配置寄存器低/高设置引脚模式输入/输出/复用/模拟和速度GPIOx_ODR端口输出数据寄存器写1输出高电平写0输出低电平GPIOx_BSRR端口位设置/清除寄存器低16位置位高16位复位RCC_APB2ENR外设时钟使能寄存器必须先开启对应GPIO端口的时钟4. 代码实现下面以PC13引脚板载LED为例实现LED闪烁#include stm32f10x.h void delay(uint32_t count) { while (count--); } int main(void) { // 1. 开启GPIOC时钟APB2总线 RCC-APB2ENR | (1 4); // RCC_APB2ENR的bit4对应GPIOC // 2. 配置PC13为推挽输出50MHz GPIOC-CRH ~(0xF 20); // 先清除CNF13和MODE13位 GPIOC-CRH | (0x3 20); // MODE131150MHz输出CNF1300推挽输出 while (1) { // 3. 点亮LEDPC13输出低电平 GPIOC-BSRR (1 (13 16)); // 高16位复位输出低电平 delay(500000); // 4. 熄灭LEDPC13输出高电平 GPIOC-BSRR (1 13); // 低16位置位输出高电平 delay(500000); } }5. 关键步骤解析步骤1开启时钟——STM32外设默认时钟关闭必须通过RCC_APB2ENR使能对应GPIO时钟。GPIOC对应bit4因此使用RCC-APB2ENR | (1 4)。步骤2配置模式——CRH寄存器控制高8位引脚PIN8~PIN15每4位控制一个引脚。PC13对应CRH的[23:20]位设置MODE为1150MHz输出CNF为00通用推挽输出。步骤3控制电平——BSRR寄存器低16位置位对应引脚输出高电平高16位置位对应引脚输出低电平。因此BSRR (1 13)使PC13输出高LED灭BSRR (1 (1316))使PC13输出低LED亮。6. 常见问题LED不亮检查时钟是否开启、引脚配置是否正确、LED正负极是否接反下载失败确认ST-Link连接正确BOOT0接地供电正常代码无法编译确保包含正确的头文件stm32f10x.h工程已选择对应芯片型号7. 总结通过直接操作寄存器控制GPIO可以深入理解STM32的底层工作原理。相比HAL库封装寄存器操作代码更精简、执行效率更高也是嵌入式系统开发考试中必须掌握的核心技能。建议读者在开发板上实际验证代码并尝试修改引脚和延时参数观察效果。