嵌入式|STM32的USART串口通讯~使用HAL库(查询方式)


目录

  • 一、USART介绍
  • 二、STM32CubeMX及Keil的使用
    • 2.1 STM32CubeMX配置环境
    • 2.2 Keil MDK 生成.Hex文件
    • 2.3 烧录
  • 三、实现
  • 四、总结

一、USART介绍 USART/UART通信是STM32的一个非常重要的外设,是一种通用串行数据总线,可实现全双工通信。
UART:通用异步收发器,
USART:通用同步/异步收发器,
可以看出USART比UART多了一个同步模式。
异步通信:
异步通信是按字符传输的。每传输一个字符就用起始位来进来收、发双方的同步。不会因收发双方的时钟频率的小的偏差导致错误。
这种传输方式利用每一帧的起、止信号来建立发送与接收之间的同步。特点是:每帧内部各位均采用固定的时间间隔,而帧与帧之间的间隔时随即的。接收机完全靠每一帧的起始位和停止位来识别字符时正在进行传输还是传输结束。
同步通信:
进行数据传输时,发送和接收双方要保持完全的同步,因此,要求接收和发送设备必须使用同一时钟。
优点是可以实现高速度、大容量的数据传送;缺点是要求发生时钟和接收时钟保持严格同步,同时硬件复杂。
本文使用异步通信
二、STM32CubeMX及Keil的使用 2.1 STM32CubeMX配置环境
我们还是选择使用STM32F103C8芯片
  • 选择USART1
嵌入式|STM32的USART串口通讯~使用HAL库(查询方式)
文章图片

  • Mode选择异步通信(Asynchronous)
  • 波特率为115200,1位停止位,无校验位
嵌入式|STM32的USART串口通讯~使用HAL库(查询方式)
文章图片

嵌入式|STM32的USART串口通讯~使用HAL库(查询方式)
文章图片

  • 创建项目
嵌入式|STM32的USART串口通讯~使用HAL库(查询方式)
文章图片

  • 生成独立的.c和.h文件
嵌入式|STM32的USART串口通讯~使用HAL库(查询方式)
文章图片

  • 右上角GENERATE CODE创建工程文件
2.2 Keil MDK 生成.Hex文件
  • main函数中添加函数
    嵌入式|STM32的USART串口通讯~使用HAL库(查询方式)
    文章图片
我们要使用的是查询方式来进行串口通讯,我们需要使用HAL库中HAL_UART_Transmit()函数
嵌入式|STM32的USART串口通讯~使用HAL库(查询方式)
文章图片

main函数中定义
uint8_t hello[20]="hello world\n";

while语句中添加
HAL_UART_Transmit(&huart1,hello,20,100000);

之后编译、构建,生成.hex文件
2.3 烧录 嵌入式|STM32的USART串口通讯~使用HAL库(查询方式)
文章图片

  • 注意烧录时芯片BOOTO置于1
三、实现
  • 打开串口调试助手,这里我使用的是XCOM
嵌入式|STM32的USART串口通讯~使用HAL库(查询方式)
文章图片

  • 调试时芯片BOOTO要置0,也需要按RESET键
  • 结果如下
    嵌入式|STM32的USART串口通讯~使用HAL库(查询方式)
    文章图片
四、总结 HAL的函数很方便,HAL_UART_Transmit()函数,掌握查询方式输出。
参考文章: 【嵌入式|STM32的USART串口通讯~使用HAL库(查询方式)】【1】【STM32】HAL库 STM32CubeMX教程四—UART串口通信详解
【2】STM32CubeMX-USART/UART通信

    推荐阅读