实验任务:
一. 了解并掌握STM32中断原理,HAL库函数开发方法。安装 stm32CubeMX,配合Keil,使用HAL库方式完成下列任务:
1、重做上一个LED流水灯作业,即用GPIO端口完成3只LED红绿灯的周期闪烁。
2、用stm32F103核心板的GPIOA端某一管脚接一个开关(用杜邦线模拟代替)。采用中断模式编程,当开关接高电平时,LED流水灯工作;
接低电平时,LED流水灯停止工作。
二. 在没有示波器条件下,可以使用Keil的软件仿真逻辑分析仪功能观察管脚的时序波形,更方便动态跟踪调试和定位代码故障点。
请用此功能观察第1题中3个GPIO端口流水灯的输出波形,并分析时序状态正确与否,高低电平转换周期(LED闪烁周期)实际为多少。
参考:https://blog.csdn.net/weixin_56102526/article/details/120877293
https://blog.csdn.net/weixin_46129506/article/details/120780184
首先下载好STM32CubeMX:
管理员身份运行
勾选next
选择安装位置后选next
点击确认按钮后点击next
安装完成后选next
然后进行环境配置,安装HAL库:
然后勾选所要安装的库
然后进行流水灯控制:
配置好程序的功能与需求
打开工程后,main函数如下
在主程序中修改一下,加入时间初始化:
将下列函数放入while函数中
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET);//PA1灯亮
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_SET);//PA2灯灭
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_SET);//PA3灯灭
HAL_Delay(1000);//ÑÓʱ1s
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET);//PA1灭
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_RESET);//PA2灯亮
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_SET);//PA3灯灭
HAL_Delay(1000);//ÑÓʱ1s
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET);//PA1灯灭
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_SET);//PA2灯灭
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_RESET);//PA3灯亮
HAL_Delay(1000);//延时1s
}
然后编译,显示无错误:
开始烧录:
cube视频
进入调试界面
在逻辑分析仪中选择需要观察的引脚
最终得到波形图:
可以看出时序状态正确,高低电平转换周期实际为1秒