文章目录
一、用GPIO端口完成3只LED红绿灯的周期闪烁
(一)安装STM32CubeMX
1.下载
[https://www.st.com/en/development-tools/stm32cubemx.html]:
最好可以注册一个账户后续也会需要注册,注册之后选择版本(选择比较新的版本)就可以直接下载压缩包了
注意:由于STM32CubeMX是Java实现的,需要安装jdk环境。(可以先下载STM32CubeMX,如果没有jdk安装时会跳转到jdk官网直接下载就好)
2.安装过程
打开压缩包中的程序文件,点击next(不要下4.27.0版本太老了,但是安装步骤一样)
点击I accept…然后next
选择安装位置然后next
继续next
然后点击Done就安装成功。
(二)安装HAL库
(1)以管理员身份运行安装好的STM32CubeMX,点击help,选择Manage embedded software packages
注意:如果弹出弹窗:The Updater is already in use and checking the server . Please retry launching the Updater after a few seconds
解决方法:1.检查自己是否是管理员身份运行
2.点击help选择check for updates点击refresh即可解决
如果没有上述问题即可忽略,接着上面说选择Manage embedded software packages之后,选择所需要的固件库,然后install now
(三)新建项目
(1)回到主页面创建新项目
(2)在左上角PartNumber选择自己的芯片,然后选中信息栏中自己的芯片,点击右上角start project
(3)点击system core,进入SYS,在debug下选择serial wire
(4)配置时钟,进入上面的rcc,有两个时钟,一个是hse和lse,将hse那里设为Crystal/Ceramic Resonator:
接下来观察时钟架构,APB2总线的时钟由hse控制,同时在这个界面得把PLLCLK右边选上
(5)接下来就是点击相应的引脚设置输出寄存器了,就是output那一项,一共选了三个,是PA4,PB9,PC15:
(6)点击project manager,配置好自己的路径和项目名,然后IDE那项改为MDK-ARM:
(7)进入 code generate界面,选择生成初始化.c/.h文件,后面点击generate code,选择open project,然后就到KEIL5了
(四)keil仿真调试
(1)写入代码
打开main.c主函数,替换主函数的部分
SystemClock_Config();//系统时钟初始化
MX_GPIO_Init();//gpio初始化
while (1)
{
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_RESET);//PA4亮灯
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_SET);//PB9熄灯
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_SET);//PC15熄灯
HAL_Delay(1000);//延时1s
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_SET);//PA4熄灯
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_RESET);//PB9亮灯
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_SET);//PC15熄灯
HAL_Delay(1000);//延时1s
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_SET);//PA4熄灯
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_SET);//PB9熄灯
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_RESET);//PC15亮灯
HAL_Delay(1000);//延时1s
}
(2)编译设置
点击魔法棒选择Target,选择v6,若按默认选择可能不能运行
魔法棒中选择output选择生成hex文件
(3)烧录
线路连接:红——B9,绿——C15,黄——A4
烧录,选中生成的hex文件
点亮效果:
(4)观察GPIO端口的波形
点击魔法棒进入Debug界面进行下图设置,
点击Debug进入调试界面,选择逻辑分析仪
添加自己要观察的引脚
运行观察波形
结果为引脚为低电平的灯亮,高电平的灯不亮,高低电平转换周期(LED闪烁周期)为1s左右。
二、采用中断模式编程,当开关接高电平时,LED流水灯工作;接低电平时,LED流水灯停止工作。
(一)新建项目
1.如上面一所说的新建项目,在左上角PartNumber选择自己的芯片,然后选中信息栏中自己的芯片,点击右上角start project,然后配置系统调试接口 SYS
,选择 Serial Wire
。配置外设 RCC
,选择 HSE (外部高速时钟)为 Crystal/Ceramic Resonator
(晶振/陶瓷谐振器)
2.选择 LED 灯引脚 PA5,设置引脚为输出模式 GPIO_Output;
选择作为外部中断的引脚 PB15,设置为与中断线 GPIO_EXTI15 连接。
2.1将 GPIO_PB15 命令为 B1_EXTI ,触发方式选择下降沿触发
2.2将 GPIO_PA5 命名为 LD1
2.3使能引脚对应的外部中断线 EXTI line[15:10]
2.4配置中断优先级
3.生成工程
(二)keil仿真测试
1.写入代码,将代码放入主函数对应位置
2.编译烧录,跟上面一内容同样的设置
点亮效果:
参考文章:
https://blog.csdn.net/m0_58892312/article/details/121004248
https://blog.csdn.net/weixin_46129506/article/details/120780184