STM32 GPIO实战:从标准库到寄存器——LED闪烁与按键扫描

📅 发布时间:2026/7/5 6:31:25 👁️ 浏览次数:
STM32 GPIO实战:从标准库到寄存器——LED闪烁与按键扫描
一.实验目的实现pc13引脚对应的led闪烁。二.实验材料1.一块stm32开发板2.st-link下载程序器3.4根母对母杜邦线三.实验思路1.时钟使能RCC在想用引脚之前必须要打开使能GPIO时钟打开方式如下RCC-APB2ENR|(14);用的是APB2路线2.GPIO模式配置由于我们要用的13号引脚大于8所以应该用CRH寄存器控制并且每个引脚占用4位分别是高两位MODE配置输出速度低两位CNF配置模式。并且对于我们这个实验要先清空再进行模式配置代码如下GPIOC-CRH~(0x0F20); GPIOC-CRH|(0x0320);3.输出控制在这个实验有两种BRR,BSRR。一种是实现低电平的开灯另一个高电平关灯达到闪烁效果四.实验代码1.纯寄存器写法#include stm32f10x.h void delay(uint32_t ms){ uint32_t i,j; for(i0;ims;i) for(j0;j7200;j); } int main(void){ RCC-APB2ENR|(14); GPIOC-CRH~(0x0F20); GPIOC-CRH|(0x0320); while(1){ GPIOC-BRR(0x0113); delay(500); GPIOC-BSRR(0x0113); delay(500); } }2.标准库写法#include stm32f10x.h // 简单延时函数与寄存器版相同 void delay(uint32_t ms) { uint32_t i, j; for (i 0; i ms; i) for (j 0; j 7200; j); } int main(void) { GPIO_InitTypeDef GPIO_InitStructure; // 定义GPIO初始化结构体 // 1. 使能 GPIOC 时钟位于 APB2 总线 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); // 2. 配置 PC13 为推挽输出50MHz GPIO_InitStructure.GPIO_Pin GPIO_Pin_13; // 选择引脚 PC13 GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP; // 推挽输出模式 GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; // 输出速度 50MHz GPIO_Init(GPIOC, GPIO_InitStructure); // 调用初始化函数 // 3. 主循环LED闪烁 while (1) { GPIO_ResetBits(GPIOC, GPIO_Pin_13); // PC13 输出低电平LED亮 delay(500); GPIO_SetBits(GPIOC, GPIO_Pin_13); // PC13 输出高电平LED灭 delay(500); } }五.实验展示