文章目录
- 一、创建CubeMX项目
- 操作步骤
- 1.STM32CubeMX创建工程
- 2.选择芯片
- 3.Pinout & Configuration配置
- 4.Clock Configuration配置
- 5.Project Manager配置
- 二、实验
- (一)LED流水灯
- 1.Keil修改代码
- 2.实验现象
- 3.keil波形仿真
- (二)2只LED灯的周期性闪烁
- 1.Keil修改代码
- 2.实验现象
- 3.波形仿真
- (三)中断控制流水灯
- 1.步骤
- 2.keil代码部分
- 3.实验现象
- 4.keil波形仿真
- 三、总结
一、创建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学习的一个重点,也是一个难点。要深刻理解中断标志位、明白中断开始和结束的条件,这几个关键点,才更有助于我们学习中断。