STM32 01 LED点灯(第一天学习)

📅 2026/7/6 3:12:21
STM32 01 LED点灯(第一天学习)
一、前言今天是我正式接触STM32的第一天之前只是简单看过相关理论今天第一次动手实操点灯实验。目前我基础很差还不会代码封装、工程分层这类技巧只能写最直白简单的代码把这次实验完整记录下来方便日后复盘也给同样刚入门的同学做个参考大佬们看到有写得不对的地方欢迎指正。二、实验目标初步认识STM32的GPIO输出功能控制板载LED周期性亮灭闪烁。三、本地工程真实结构我使用的是基础空白模板工程文件夹只有系统自带的四类没有Hardware文件夹也没有新建单独的驱动文件Start芯片启动文件固定自带不用修改​Library官方底层标准库提供外设相关函数​System存放系统时钟、延时工具函数​User唯一可以自行编写代码的目录现阶段我完全不懂得代码分层封装所有操作逻辑直接写在User下的main.c主函数内不额外新建.c/.h驱动文件贴合刚上手的学习水平。四、硬件原理浅显理解开发板自带LED连接在PC13引脚​引脚输出低电平LED导通点亮输出高电平LED断电熄灭​电路里需要串联220Ω限流电阻避免电流过大烧毁灯珠这点是学长提醒我的。五、完整代码#includestm32f10x.h// Device header#includedelay.hintmain(){RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitTypeDef GPIO_InitStruct;GPIO_InitStruct.GPIO_ModeGPIO_Mode_Out_PP;GPIO_InitStruct.GPIO_PinGPIO_Pin_0;GPIO_InitStruct.GPIO_SpeedGPIO_Speed_50MHz;GPIO_Init(GPIOA,GPIO_InitStruct);while(1){GPIO_ResetBits(GPIOA,GPIO_Pin_0);Delay_ms(500);GPIO_SetBits(GPIOA,GPIO_Pin_0);Delay_ms(500);}}六、个人粗浅学习感悟作为刚入门的新手我现在对知识点的理解还特别浅薄简单梳理一下今天学到的内容STM32的GPIO外设默认关闭时钟如果忘记添加开启时钟的代码LED完全没有任何反应这是我踩的第一个大坑​引脚模式必须设置为推挽输出只有这个模式才能主动输出高低电平选错模式无法驱动LED​GPIO_ResetBits用来拉低引脚电平、点亮灯光GPIO_SetBits拉高电平、关闭灯光最开始我记反了反复试了好几次才分清​while(1)无限死循环是单片机程序的核心能让亮灭逻辑不断重复实现持续闪烁的效果。七、今天踩过的所有坑漏写时钟开启代码上电后LED毫无动静排查很久才找到问题​不清楚引脚速度参数的作用暂时先照搬教程里的50MHz​高低电平逻辑混淆上电后LED一直常亮无法熄灭​