失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【嵌入式系统开发11】串口通讯“小试牛刀”——完成一个STM32的USART串口通讯程序

【嵌入式系统开发11】串口通讯“小试牛刀”——完成一个STM32的USART串口通讯程序

时间:2022-09-02 01:22:58

相关推荐

【嵌入式系统开发11】串口通讯“小试牛刀”——完成一个STM32的USART串口通讯程序

本文目的是主要介绍通过STM32F103C8T6完成一个STM32的USART串口通讯程序,在没有示波器条件下,使用Keil的软件仿真逻辑分析仪功能观察管脚的时序波形。

文章目录

前言(一)需求分析(二)环境预置1.硬件工具2.软件配置2.1 STM32cubeMX2.2 Keil (三)工程创建1.串口通讯工程新创2.工程参数配置3.配置项目设置 (四)Keil编译程序以及Hex文件的生成1.新建工程2.代码编写3.编译文件 (五)烧录硬件实现1.打开FlyMcu2.开发板boot0置1,boot1置03.开发板boot0和boot1都置04.实现效果 (六)虚拟逻辑分析仪仿真观察1.前置设备2.进入DEBUG观察3.观察波形并总结 (七)总结(八)参考文献

前言

※ stm32CubeMX,配合Keil,分别尝试使用寄存器地址方式(汇编或C,不限) 和HAL库进行点亮流水灯,可参考博主的博客:/qq_52199251/article/details/127274537

※ 本文主要讲解如何完成一个STM32的USART串口通讯程序;在没有示波器条件下,使用Keil的软件仿真逻辑分析仪功能观察管脚的时序波形。

(一)需求分析

※ 完成一个STM32的USART串口通讯程序(查询方式即可,暂不要求采用中断方式),要求:

1)设置波特率为115200,1位停止位,无校验位;

2)STM32系统给上位机(win10)连续发送“hello windows!”。win10采用“串口助手”工具接收。

※ 在没有示波器条件下,可以使用Keil的软件仿真逻辑分析仪功能观察管脚的时序波形,更方便动态跟踪调试和定位代码故障点。 请用此功能观察第1题中3个GPIO端口的输出波形,和第2题中串口输出波形,并分析时序状态正确与否,高低电平转换周期(LED闪烁周期)实际为多少。

(二)环境预置

1.硬件工具

STM32F103C8T6 , USB转TTL,面包板,还有部分杜邦线

● 当然还有必要的PC端以及相应的驱动配置。

2.软件配置

2.1 STM32cubeMX

STM32CubeMX是被广泛使用的。它集成了芯片选型、引脚分配和功能配置,中间件配置,时钟配置,初始代码和项目的功能。其中STM32CubeMXSTM32Cubeprogrammer,除了对所有STM32芯片系列,和所有应用的通用支持之外,还有一些对特定应用的支持,比如STM32Cube.AI就是基于STM32CubeMX的插件功能,来把训练好的模型部署到STM32上;还比如在安全固件升级和安全固件安装,即SBSFU和SFI操作里,STM32CubeProgrammer就启动了代码加密,HSM实例化等功能。STM32支持丰富的开源和ST自主知识产权中间件,比如来自开源社区的FreeRTOS,FatFS,mbedTLS;ST自己的USB主机和设备协议栈,TouchGFX等。

关于STM32CubeMX介绍及安装参考博主:/qq_44629109/article/details/126299438

2.2 Keil

keil安装

链接:/s/1ttrDhv6kXgAvPiYINf9iGw

提取码:1234

通过以上链接下载mdk和注册器,点击安装mdk,根据提示自行更改软件路径和支持包路径,填写完注册信息后NEXT,等待安装。安装完成,点击Finish。

注册

链接:/s/1T11pBKpD6xc-cNmXBskcaw

提取码:1234

支持包安装

链接:/s/1a7UDSVeLC4ktHNN9lV9oIA

提取码:1234

点击运行下载的支持包,NEXT开始安装,安装完成,点击Finish。

(三)工程创建

1.串口通讯工程新创

● 点击ACCESS TO MCU SELECTOR

● 找到自己所用的芯片型号,并进行建立。

2.工程参数配置

● Mode选择异步通信(Asynchronous)。

●波特率为115200,1位停止位,无校验位(这里不需要改,默认就是这样)。

3.配置项目设置

最后生成项目即可。

(四)Keil编译程序以及Hex文件的生成

1.新建工程

● 用keil打开刚刚在CubeMX生成的项目文件。

2.代码编写

● 在main.c文件中补充代码。

.在main.c中定义STM32需要给上位机发送的消息

uint8_t hello[20]="hello world\n";

在main.c中定义一个延时函数,来使设置发送的时间间隔:

void Delay_wxc( volatile unsigned int t){unsigned int i;while(t--)for (i=0;i<800;i++);}

.在while循环中调用查询,并调用延时函数

while (1){HAL_UART_Transmit(&huart1,hello,20,100000);Delay_wxc(3500); //这里每个人电脑不一样发送的间隔时延需要自己调整尝试/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}

3.编译文件

(五)烧录硬件实现

1.打开FlyMcu

● 编译发现没有报错,进行烧录实现。

2.开发板boot0置1,boot1置0

● 这里需要对STM32F103C8T6进行按键预置。

3.开发板boot0和boot1都置0

● 按下复位监控,并且打开串口助手,查看环境是否配置正确。

4.实现效果

最总我们实现了非常好的效果,成功实现了接收信号

(六)虚拟逻辑分析仪仿真观察

1.前置设备

● 首先打开魔法棒,进行修改参数。

● 修改一下相应参数。

● 记得打开Keil自带的仿真模拟器。

2.进入DEBUG观察

● 点击Setup进行修改相应参数。

● 设置为bit流

3.观察波形并总结

●可以得到如下波形。

●放大后进行观看,高电平持续实际时间为6us:

●同理可以观察低电平持续时间为86us:

(七)总结

本文介绍了如何在嵌入式系中通过STM32F103C8T6完成一个STM32的USART串口通讯程序,在没有示波器条件下,使用Keil的软件仿真逻辑分析仪功能观察管脚的时序波形。

寄语:鹏铭

 我真的真的真的很想告诉你

 你需要的不是优秀,不是金榜题名,不是年入百万。

 而且是你和母亲相守的小幸福啊!!!!!

(八)参考文献

/zhoushuaiyxlmwan/article/details/127327982

/qq_53112972/article/details/127332400

如果觉得《【嵌入式系统开发11】串口通讯“小试牛刀”——完成一个STM32的USART串口通讯程序》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。