目录
一、内容介绍
二、环境建立
软件安装
二、STM32CubeMX的使用
1)新建工程
2)工程配置
三、keil中仿真
1)功能完善
2)仿真观察
四、led点亮
代码烧录
四、总结
五、参考内容
安装 stm32CubeMX,配合Keil,使用寄存器方式(汇编或C,不限) 或HAL库这两种方式,完成下列任务:
重做上一个博客的LED流水灯作业,即用GPIO端口完成3只LED红绿灯的周期闪烁。
在没有示波器条件下,可以使用Keil的软件仿真逻辑分析仪功能观察管脚的时序波形,更方便动态跟踪调试和定位代码故障点。 请用此功能观察3个GPIO端口的输出波形,并分析其波形反映的时序状态正确与否,高低电平转换周期(LED闪烁周期)实际为多少。
安装CubeMx一共需要三个
具体的安装过程见参考博客:
(17条消息) 【STM32】STM32 CubeMx使用教程一--安装教程_Z小旋-CSDN博客_stm32cubemx安装
1)新建工程
首先,打开STM32CubeMX新建工程,进行如下操作,然后点击左上角进行下一步设置:
接下来需要对我们的芯片进行一些初始化设置;
将MCU的各种外设和资源分类,供用户选择使用
MCU的外设资源按A-Z 排序,供用户选择使用
首先进行时钟源配置,将时钟树的内核时钟配置为72MHZ ;
接下来,需要配置RCC才能够使用外部时钟源:选择晶振后,芯片预览图对应管脚也会发生如下图变化;
由于我们题目中是选择的GPIO端口,所以需要在芯片上选择该端口的配置,具体如下图(这里选择的是PA4,PA5,PA6三个端口):
GPIO output level:有low和high两种选择,一般选择low
GPIO mode:推挽输出和开漏输出两者模式,两者模式的区别在于推挽输出中1代表VCC,0表示 GND;开漏输出中1代表高阻态,0代表GND。
GPIO Pull-up/Pull-down:输入需要上下拉,输出一般没有上下拉
Maxinum output speed:最大的输出速度,一般选择low就可以了。
设置完MCU的各个配置之后,接下来就是工程文件的设置(路径不能有中文名);
然后点击Code Generator(代码生成器设置),进行进一步配置
PS:每个选项的具体说明见参考内容的博客!!!
然后点击GENERATE CODE 生成工程;
1)功能完善
在上面生成工程文件后,可直接在keil中打开该工程,打开后如下图所示:
接下来,需要对从STM32CubeMX中生成的工程代码添加一些功能,以达到题目的要求;
打开上一张图片中显示的main.c文件,找到其中的while循环代码段,
在 While循环中添加以下代码:
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_SET);//将A4灯设置为高电平
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_RESET); //A4灯为低电平
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET); //A5设置为高电平
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN5,GPIO_PIN_RESET); //A5灯灭(低电平)
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_6,GPIO_PIN_SET);//A5灯亮(高电平)
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_6,GPIO_PIN_RESET);//A6低电平
所有自己编写的代码都应该放在/* USER CODE BEGIN XXX */ /* USER CODE END XXX */之间
这样我们修改工程的时候你自己写的代码就不会被删除,所以添加后如下图所示:
从上面代码可以看出HAL库的用处了,其中的函数真的很简洁使用!
点击“仙女棒”,对仿真环境进行一些设置:
编译没有错误后,就可以开始仿真了,由于我们还需要观察波形,所以需要添加对应的管脚,具体如下图:
点击以下图标开始观察波形:
仿真波形如下图所示:
到这里仿真就结束了!
打开烧录软件mcuisp,插入我们连接好的芯片(具体连接方式看上一篇博客,这次的连接只需要改变led灯的连接位置),点击搜索串口,我这里的端口号是“COM3”,选择bps为115200,具体如下:
烧录完成后即可看到面包板上led灯接连周期性闪烁;
烧录进去后实物展示可见上一篇博客,只需要将三个灯的接口改到“PA4,PA5,PA6”三个接口,之后灯就会周期性闪烁了!
本次实验与上次实验相比,让我们体会到了通过工具stm32cubMX生成工程文件比自己编写代码要简单方便很多,尤其针对我这种什么都不太懂的人来说,总之,学到了很多!文章当中如有不对的地方,请指出!!!
1、(17条消息) STM32实现LED闪烁——基于HAL库_Harriet的博客-CSDN博客_stm32实现led灯的闪烁
2、(17条消息) 【STM32】STM32CubeMX教程二--基本使用(新建工程点亮LED灯)_Z小旋-CSDN博客_stm32cubemx使用教程
3、(17条消息) 【STM32】STM32CubeMX教程二--基本使用(新建工程点亮LED灯)_Z小旋-CSDN博客_stm32cubemx使用教程