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

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

文章目录

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


前言

※ stm32CubeMX,配合Keil,分别尝试使用寄存器地址方式(汇编或C,不限) 和HAL库进行点亮流水灯,可参考博主的博客:https://blog.csdn.net/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端以及相应的驱动配置。
【嵌入式系统开发11】串口通讯“小试牛刀”——完成一个STM32的USART串口通讯程序_第1张图片

2.软件配置

2.1 STM32cubeMX

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

关于STM32CubeMX介绍及安装参考博主:https://blog.csdn.net/qq_44629109/article/details/126299438

2.2 Keil

keil安装
链接:https://pan.baidu.com/s/1ttrDhv6kXgAvPiYINf9iGw
提取码:1234
通过以上链接下载mdk和注册器,点击安装mdk,根据提示自行更改软件路径和支持包路径,填写完注册信息后NEXT,等待安装。安装完成,点击Finish。
注册
链接:https://pan.baidu.com/s/1T11pBKpD6xc-cNmXBskcaw
提取码:1234
支持包安装
链接:https://pan.baidu.com/s/1a7UDSVeLC4ktHNN9lV9oIA
提取码:1234
点击运行下载的支持包,NEXT开始安装,安装完成,点击Finish。


(三)工程创建

1.串口通讯工程新创

● 点击ACCESS TO MCU SELECTOR【嵌入式系统开发11】串口通讯“小试牛刀”——完成一个STM32的USART串口通讯程序_第3张图片
● 找到自己所用的芯片型号,并进行建立。
【嵌入式系统开发11】串口通讯“小试牛刀”——完成一个STM32的USART串口通讯程序_第4张图片

2.工程参数配置

● Mode选择异步通信(Asynchronous)。
【嵌入式系统开发11】串口通讯“小试牛刀”——完成一个STM32的USART串口通讯程序_第5张图片
●波特率为115200,1位停止位,无校验位(这里不需要改,默认就是这样)。
【嵌入式系统开发11】串口通讯“小试牛刀”——完成一个STM32的USART串口通讯程序_第6张图片
【嵌入式系统开发11】串口通讯“小试牛刀”——完成一个STM32的USART串口通讯程序_第7张图片

3.配置项目设置

【嵌入式系统开发11】串口通讯“小试牛刀”——完成一个STM32的USART串口通讯程序_第8张图片
最后生成项目即可。
【嵌入式系统开发11】串口通讯“小试牛刀”——完成一个STM32的USART串口通讯程序_第9张图片


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

1.新建工程

● 用keil打开刚刚在CubeMX生成的项目文件。
【嵌入式系统开发11】串口通讯“小试牛刀”——完成一个STM32的USART串口通讯程序_第10张图片

2.代码编写

● 在main.c文件中补充代码。
.在main.c中定义STM32需要给上位机发送的消息

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

【嵌入式系统开发11】串口通讯“小试牛刀”——完成一个STM32的USART串口通讯程序_第11张图片
在main.c中定义一个延时函数,来使设置发送的时间间隔:

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

【嵌入式系统开发11】串口通讯“小试牛刀”——完成一个STM32的USART串口通讯程序_第12张图片
.在while循环中调用查询,并调用延时函数

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

    /* USER CODE BEGIN 3 */
  }

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

3.编译文件

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


(五)烧录硬件实现

1.打开FlyMcu

● 编译发现没有报错,进行烧录实现。
【嵌入式系统开发11】串口通讯“小试牛刀”——完成一个STM32的USART串口通讯程序_第16张图片

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

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

3.开发板boot0和boot1都置0

● 按下复位监控,并且打开串口助手,查看环境是否配置正确。
【嵌入式系统开发11】串口通讯“小试牛刀”——完成一个STM32的USART串口通讯程序_第17张图片

4.实现效果

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


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

1.前置设备

● 首先打开魔法棒,进行修改参数。
在这里插入图片描述
● 修改一下相应参数。
在这里插入图片描述
● 记得打开Keil自带的仿真模拟器。
在这里插入图片描述
在这里插入图片描述

2.进入DEBUG观察

● 点击Setup进行修改相应参数。
在这里插入图片描述● 设置为bit流
【嵌入式系统开发11】串口通讯“小试牛刀”——完成一个STM32的USART串口通讯程序_第18张图片

3.观察波形并总结

●可以得到如下波形。

●放大后进行观看,高电平持续实际时间为6us:
【嵌入式系统开发11】串口通讯“小试牛刀”——完成一个STM32的USART串口通讯程序_第19张图片
●同理可以观察低电平持续时间为86us:
【嵌入式系统开发11】串口通讯“小试牛刀”——完成一个STM32的USART串口通讯程序_第20张图片


(七)总结

本文介绍了如何在嵌入式系中通过STM32F103C8T6完成一个STM32的USART串口通讯程序,在没有示波器条件下,使用Keil的软件仿真逻辑分析仪功能观察管脚的时序波形。
寄语:鹏铭
   我真的真的真的很想告诉你
   你需要的不是优秀,不是金榜题名,不是年入百万。
   而且是你和母亲相守的小幸福啊!!!!!

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

(八)参考文献

https://blog.csdn.net/zhoushuaiyxlmwan/article/details/127327982
https://blog.csdn.net/qq_53112972/article/details/127332400

你可能感兴趣的:(stm32,单片机,arm)