HAL库点LED灯

一、创建CubeMX项目

操作步骤

1.STM32CubeMX创建工程

打开STM32CubeMX,新建工程。
在这里插入图片描述

2.选择芯片

在这里插入图片描述

3.Pinout & Configuration配置

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.Clock Configuration配置

在这里插入图片描述

5.Project Manager配置

在这里插入图片描述
注意保存文件的路径不能含有中文字符。

在这里插入图片描述

在这里插入图片描述
至此,接下来会进入keil,并自动创建keil的代码。

二、实验

(一)LED流水灯

重做上一个LED流水灯作业

1.Keil修改代码

在main()函数的while(1)循环里修改代码

在这里插入图片描述

直接编译,下载。

2.实验现象

20240520_001

3.keil波形仿真

在这里插入图片描述
在这里插入图片描述

(二)2只LED灯的周期性闪烁

用GPIO端口完成2只LED灯的周期闪烁。

1.Keil修改代码

在main()函数的while(1)循环里修改代码

代码:

	HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);
	HAL_Delay(250); //延时0.25s
	HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);
	HAL_Delay(250); //延时0.25s

在这里插入图片描述

2.实验现象

20240524_001

3.波形仿真

在这里插入图片描述

(三)中断控制流水灯

接上,再用GPIO端某一管脚接2个开关(用杜邦线模拟代替)。采用中断模式编程,当2分开关接高电平时,对应的两个LED灯停止工作(即停止周期性闪烁),接低电平时,恢复工作。(参考教材图6-12)

思路:用PB1作为开关,杜邦线一端接入PB1,另一端接入

1.步骤

①将PB0和PB1设置为外部中断源,PA8和PA9作为输出端口用来接小灯。
在这里插入图片描述

②设置中断源PB0和PB1为上升沿触发,默认为下拉输入。
在这里插入图片描述

③设置PA8、PA9输出口的速度为high。

在这里插入图片描述

④开启中断。在这里插入图片描述

⑤查看有关中断函数
在这里插入图片描述
在这里插入图片描述

2.keil代码部分

①重写弱函数

 HAL_GPIO_EXTI_Callback(GPIO_Pin)
 {
	if(GPIO_Pin == GPIO_PIN_0|GPIO_PIN_1)
	{
	HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,GPIO_PIN_SET);
	HAL_GPIO_WritePin(GPIOA,GPIO_PIN_9,GPIO_PIN_SET);	
	}
}

②main()中的while(1)循环

  while (1)
  {
	HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_8);
	HAL_Delay(250); //延时0.25s
	HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_9);
	HAL_Delay(250); //延时0.25s
  }

3.实验现象

20240524——002

4.keil波形仿真

在这里插入图片描述

三、总结

中断是STM32学习的一个重点,也是一个难点。要深刻理解中断标志位、明白中断开始和结束的条件,这几个关键点,才更有助于我们学习中断。

  • 16
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值