USART

Universal Synchronous/Asynchronous Receiver/Transmitter
USART 是 STM32 内部集成的硬件外设,通用同步/异步收发器,可根据数据寄存器的一个字节数据自动生成数据帧时序,从 TX 引脚发送出去;也可自动接收 RX 引脚的数据帧时序,拼接为一个字节数据,存放在数据寄存器里。

主要还是使用异步通信,等同于 UART,同步通信只是可以输出时钟信号,不能读取,不能进行两个单片机的同步通信。

基本配置

STM32F103C8T6 拥有的 USART 资源:USART1(APB2)、USART2(APB1)、USART3(APB1)

基本使用

扩展使用

结构框图

引脚图见 STM32F103C8T6

Pasted image 20240811174444.png

基础功能

程序上共用地址 DR ,实际在物理上分为两个独立的寄存器:

发送移位寄存器,接收移位寄存器

增强功能

硬件流控制:其中 nCTS nRTS 交叉连接, n 表示低电平有效

输出同步时钟信号 发送寄存器每移位一次,同步时钟电平就跳变一个周期,只能输出,不能读入

  1. 可以兼容别的协议,如 SPI
  2. 自适应波特率,接收设备可以测量此信号的周期,来确定波特率

唤醒单元 Wake up unit 实现串口挂载多设备
USART Address 来给串口分配地址,实现多个从设备的通信

中断控制 SR 状态寄存器的各种标志位,判断发送状态和接收状态的必要标志位

波特率发生器 分频器,APB 时钟分频,得到发送和接收的时钟

采样策略 NE 噪声标志位,如果采样中置为 1,则说明出现了噪声
16 位波特率采样时钟,波特率= fPCLKn16DIV

基本结构图

Pasted image 20240916192050.png

基本流程

开启时钟,将 USART、GPIO 的时钟打开
GPIO 初始化,将 TX 配置为复用输出,RX 配置为输入
配置 USART,结构体初始化
如果需要接收,配置 NVIC 中断
开关控制使能

发送数据,调用发送函数
接收数据,调用接收函数,
获取发送和接收的状态,调用获取标志位的函数

usart. h

基本函数

C
void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);//写DR寄存器
uint16_t USART_ReceiveData(USART_TypeDef* USARTx);//读DR寄存器

FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);
void USART_ClearFlag(USART_TypeDef* USARTx, uint16_t USART_FLAG);
ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT);
void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT);

还有增强功能的其他函数

实际应用

CH340 USB 转串口模块
数据包