安装 stm32CubeMX,配合Keil,分别尝试使用寄存器地址方式(汇编或C,不限) 和HAL库这两种方式,完成下列任务: 1、重做上一个LED流水灯作业,即用GPIO端口完成3只LED红绿灯的周期闪烁。 2、完成一个STM32的USART串口通讯程序(查询方式即可,暂不要求采用中断方式),要求: 1)设置波特率为115200,1位停止位,无校验位; 2)STM32系统给上位机(win10)连续发送“hello windows!”。win10采用“串口助手”工具接收。
一、HAl库实现流水灯
1.安装cubeMX
安装教程:STM32CubeMX系列教程02_STM32CubeMX工具、HAL库下载、安装说明 按照以上教程安装好后开始下一步
2.创建项目
打开cubeMX ![在这里插入图片描述](https://img-blog.csdnimg.cn/c4edb0f3f4ab4c7f8f55d1d5248b8b5b.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASXZhbkBYaWFuZw==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center) 选择New Project下的第一个选项access to mcu那一个 ![在这里插入图片描述](https://img-blog.csdnimg.cn/6f2f4e5bec9640e5b9f55969f7f871e2.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASXZhbkBYaWFuZw==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center) 在左上的part number中输入对应芯片名,中间出现对应的芯片后双击进入编辑 ![在这里插入图片描述](https://img-blog.csdnimg.cn/1a2bea4a33c8485e863db34e7f43c3c9.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASXZhbkBYaWFuZw==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center) 选择PA4,PB5,PC14三个引脚,都选择GPIO_Output选项 ![在这里插入图片描述](https://img-blog.csdnimg.cn/eae82e8744c74f32b31abaf1da8b4975.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASXZhbkBYaWFuZw==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center) 点击左侧system core选项,选择sys,右方debug选择serial write 接着点击GPIO设置 ![在这里插入图片描述](https://img-blog.csdnimg.cn/43f1a56029b646d1a6513ff06bc0e9fc.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASXZhbkBYaWFuZw==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center) 点击上方Project Manager ![在这里插入图片描述](https://img-blog.csdnimg.cn/5c955888a6c1490ba722e59e5e8ab299.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASXZhbkBYaWFuZw==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center) 输入项目名称,application Structure选择basic,ide选择mdk,版本对应keil版本,最后点击右上方generate code 代码创建好后点击open即可keil打开项目 ![在这里插入图片描述](https://img-blog.csdnimg.cn/5f16e535ad5a46c8880ee657240e82f7.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASXZhbkBYaWFuZw==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center) 修改while循环实现流水灯,编译创建hex文件 ![在这里插入图片描述](https://img-blog.csdnimg.cn/9e963d6687fe47918fff598c6b33acdf.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASXZhbkBYaWFuZw==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center) 烧录hex文件 效果:HAL库实现流水灯
3.波形图
![在这里插入图片描述](https://img-blog.csdnimg.cn/68f69f3b6f58474bbc5d5e21328303d1.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASXZhbkBYaWFuZw==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center) ![在这里插入图片描述](https://img-blog.csdnimg.cn/f8afceb092d14c1eadfc4685d32192e8.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASXZhbkBYaWFuZw==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center) ![在这里插入图片描述](https://img-blog.csdnimg.cn/c622584075e9477cbfbf60d7b13f7fd6.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASXZhbkBYaWFuZw==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center) 可以看到按照A4、B5、C14的顺序依次先高电平再低电平,时间间隔约为1s。
二、USART串口通讯
1.创建项目
项目创建与前面步骤一致 ![在这里插入图片描述](https://img-blog.csdnimg.cn/bde3eb8035b449fba86ab91ae1f6be5f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASXZhbkBYaWFuZw==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center) 在AZ选项中选择usart1并进行图中配置 然后generate code,manager选项与前面也一致 keil打开项目 ![在这里插入图片描述](https://img-blog.csdnimg.cn/9734aa1656b04141b6ac177c833572e3.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASXZhbkBYaWFuZw==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center) 修改while循环 ![在这里插入图片描述](https://img-blog.csdnimg.cn/87a35897f7864f6599fc5c8bea9036c9.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASXZhbkBYaWFuZw==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center) PA4端口在每次发送信息后亮0.1秒后熄灭,等待0.9秒后继续循环上述步骤。 烧录hex ![在这里插入图片描述](https://img-blog.csdnimg.cn/5d73b39da5ad46c08afac0ecacb97b92.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASXZhbkBYaWFuZw==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
2.实现效果
![在这里插入图片描述](https://img-blog.csdnimg.cn/8a4c85c17dc6456f9d0250afd3c68d3b.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASXZhbkBYaWFuZw==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
三、总结
通过使用HAL库可以大大减少我们配置对应引脚的时间和代码量,在操作方面也方便了许多,不需要再翻资料查找每一个寄存器的基地址了。而且HAL库可以一键帮我们配置串口输出参数,很方便编程。
四、参考
STM32CubeMX系列|串口通讯 STM32实现LED闪烁——基于HAL库
|