结构框图
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/31acc0e58fde164d1ec9ffd94edef7a9.png)
数据位
![请添加图片描述](https://i-blog.csdnimg.cn/blog_migrate/9183f77a76342c86370b84021b8a1a81.png)
异步通信帧结构:
1、起始位:
每帧以一个 START 位开始,并且始终为低电平。
2、数据位数据包:
8位或者9位数据
第9位是奇偶校验位
3、STOP 位:
可以是一位或两位。它在数据位包之后发送以指示帧的结束。停止位始终为逻辑高。
奇偶校验位:
用来表示发送数据逻辑高的数量添加在后,如果数据为偶数 偶校验:则是0,奇校验:则是1
寄存器
控制寄存器 USART_CR1
UE:串口使能位 (USART enable)
0:USART分频器和输出被禁止;
1:USART模块使能。
M:字长 (Word length)
0:一个起始位,8个数据位,n个停止位;
1:一个起始位,9个数据位,n个停止位。
WAKE:USART唤醒的方法 (Wakeup method)
0:被空闲总线唤醒;
1:被地址标记唤醒。
PCE:检验控制使能 (Parity control enable)
0:禁止校验控制;
1:使能校验控制。
PS:校验选择 (Parity selection)
0:偶校验;
1:奇校验。
PEIE:PE中断使能 (PE interrupt enable)
0:禁止产生中断;
1:当USART_SR中的PE为’1’时,产生USART中断。
TXEIE:发送缓冲区空中断使能 (TXE interrupt enable)
0:禁止产生中断;
1:当USART_SR中的TXE为’1’时,产生USART中断。
TCIE:发送完成中断使能 (Transmission complete interrupt enable)
0:禁止产生中断;
1:当USART_SR中的TC为’1’时,产生USART中断。
RXNEIE:接收缓冲区非空中断使能 (RXNE interrupt enable)
0:禁止产生中断;
1:当USART_SR中的ORE或者RXNE为’1’时,产生USART中断。
IDLEIE:IDLE中断使能 (IDLE interrupt enable)
0:禁止产生中断;
1:当USART_SR中的IDLE为’1’时,产生USART中断。
TE:发送使能 (Transmitter enable)
0:禁止发送;
1:使能发送。
RE:接收使能 (Receiver enable)
0:禁止接收;
1:使能接收,并开始搜寻RX引脚上的起始位。
RWU:接收唤醒 (Receiver wakeup)
0:接收器处于正常工作模式;
1:接收器处于静默模式。
SBK:发送断开帧 (Send break)
0:没有发送断开字符;
1:将要发送断开字符。
状态寄存器 USART_SR
CTS: CTS 标志 (CTS flag)
0:nCTS状态线上没有变化;
1:nCTS状态线上发生变化。
注:UART4和UART5上不存在这一位。硬件置高、软件清零
LBD: LIN断开检测标志 (LIN break detection flag)
0:没有检测到LIN断开;
1:检测到LIN断开。
硬件置高、软件清零
TXE:发送数据寄存器空 (Transmit data register empty)
TDR寄存器中的数据被硬件转移到移位寄存器的时候,该位被硬件置位
0:数据还没有被转移到移位寄存器;
1:数据已经被转移到移位寄存器。
硬件置高、软件清零
TC:发送完成 (Transmission complete)
0:发送还未完成;
1:发送完成。
硬件置高、软件清零
RXNE:读数据寄存器非空 (Read data register not empty)
当RDR移位寄存器中的数据被转移到USART_DR寄存器中,该位被硬件置位。
0:数据没有收到;
1:收到数据,可以读出。
硬件置高、软件清零
IDLE:监测到总线空闲 (IDLE line detected)
当检测到总线空闲时,该位被硬件置位。
0:没有检测到空闲总线;
1:检测到空闲总线。
硬件置高、软件清零
注意:IDLE位不会再次被置高直到RXNE位被置起(即又检测到一次空闲总线)
ORE:过载错误 (Overrun error)
当RXNE仍然是’1’的时候,当前被接收在移位寄存器中的数据,需要传送至RDR寄存器时,硬件将该位置位。
0:没有过载错误;
1:检测到过载错误。
硬件置高、软件清零
注意:该位被置位时,RDR寄存器中的值不会丢失,但是移位寄存器中的数据会被覆盖
NE: 噪声错误标志 (Noise error flag)
在接收到的帧检测到噪音时,由硬件对该位置位
0:没有检测到噪声;
1:检测到噪声。
硬件置高、软件清零
注意:该位不会产生中断,因为它和RXNE一起出现,硬件会在设置RXNE标志时产生中断。
FE: 帧错误 (Framing error)
当检测到同步错位,过多的噪声或者检测到断开符, 硬件置位
0:没有检测到帧错误;
1:检测到帧错误或者break符。
硬件置高、软件清零
PE: 校验错误 (Parity error)
在接收模式下,如果出现奇偶校验错误,硬件对该位置位。
0:没有奇偶校验错误;
1:奇偶校验错误。
硬件置高、软件清零
数据寄存器 USART_DR