基于HAL库的流水灯

一、用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版本太老了,但是安装步骤一样)

image-20231021145422726

点击I accept…然后next

image-20231021145703008

选择安装位置然后next

image-20231021145756000

继续next

image-20231021150155347

image-20231021150230137

然后点击Done就安装成功。

(二)安装HAL库

(1)以管理员身份运行安装好的STM32CubeMX,点击help,选择Manage embedded software packages

image-20231021150942574

注意:如果弹出弹窗: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即可解决

image-20231021151316639

如果没有上述问题即可忽略,接着上面说选择Manage embedded software packages之后,选择所需要的固件库,然后install now

image-20231021151740548

image-20231021154105583

(三)新建项目

(1)回到主页面创建新项目

image-20231021154503663

(2)在左上角PartNumber选择自己的芯片,然后选中信息栏中自己的芯片,点击右上角start project

image-20231021154533632

(3)点击system core,进入SYS,在debug下选择serial wire

image-20231021154849878

(4)配置时钟,进入上面的rcc,有两个时钟,一个是hse和lse,将hse那里设为Crystal/Ceramic Resonator:

image-20231021155042273

接下来观察时钟架构,APB2总线的时钟由hse控制,同时在这个界面得把PLLCLK右边选上

image-20231021155107444

(5)接下来就是点击相应的引脚设置输出寄存器了,就是output那一项,一共选了三个,是PA4,PB9,PC15:

image-20231021160042185

image-20231021160145808

(6)点击project manager,配置好自己的路径和项目名,然后IDE那项改为MDK-ARM:

image-20231021160231217

(7)进入 code generate界面,选择生成初始化.c/.h文件,后面点击generate code,选择open project,然后就到KEIL5了

image-20231021160314193

(四)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,若按默认选择可能不能运行

image-20231021160732992

魔法棒中选择output选择生成hex文件

image-20231021160904899

(3)烧录

线路连接:红——B9,绿——C15,黄——A4

image-20231021161926707

烧录,选中生成的hex文件

image-20231021162021806

点亮效果:

(4)观察GPIO端口的波形

点击魔法棒进入Debug界面进行下图设置,

image-20231021165523114

点击Debug进入调试界面,选择逻辑分析仪

image-20231021165725430

添加自己要观察的引脚

image-20231021165751836

image-20231021165827596

运行观察波形

image-20231021165901266

结果为引脚为低电平的灯亮,高电平的灯不亮,高低电平转换周期(LED闪烁周期)为1s左右。

二、采用中断模式编程,当开关接高电平时,LED流水灯工作;接低电平时,LED流水灯停止工作。

(一)新建项目

1.如上面一所说的新建项目,在左上角PartNumber选择自己的芯片,然后选中信息栏中自己的芯片,点击右上角start project,然后配置系统调试接口 SYS,选择 Serial Wire。配置外设 RCC ,选择 HSE (外部高速时钟)为 Crystal/Ceramic Resonator(晶振/陶瓷谐振器)

image-20231021170848110

image-20231021170907551

2.选择 LED 灯引脚 PA5,设置引脚为输出模式 GPIO_Output;
选择作为外部中断的引脚 PB15,设置为与中断线 GPIO_EXTI15 连接。

2.1将 GPIO_PB15 命令为 B1_EXTI ,触发方式选择下降沿触发

image-20231021171026976

2.2将 GPIO_PA5 命名为 LD1

image-20231021171049758

2.3使能引脚对应的外部中断线 EXTI line[15:10]

image-20231021171304161

2.4配置中断优先级

image-20231021171333798

3.生成工程

image-20231021171413237

(二)keil仿真测试

1.写入代码,将代码放入主函数对应位置

image-20231021171706517

2.编译烧录,跟上面一内容同样的设置

image-20231021171836757

点亮效果:


参考文章:
https://blog.csdn.net/m0_58892312/article/details/121004248
https://blog.csdn.net/weixin_46129506/article/details/120780184

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值