232电平 +—15v
uart电平 0/5v

协议层

一个数据包的组成

数据包
起始位: 一个逻辑0
结束位:0.5个,1个,1.5个,2个逻辑1
有效数据:5~8位长度
校验位(可选):奇校验even,偶校验odd

stm32上的串口

TX:发送
RX:接收
SCLK:时钟仅同步通信时使用
nRTS:请求发送(低电平有效)
nCTS:允许发送(低电平有效)

引脚

USART1挂载在APB2上,其他挂载在APB1上

数据寄存器

USART_DR:9个数据,发送和接收寄存器使用同一个地址

USART_CR1控制寄存器

发送:UE=1 TE=1 将数据送到 TDR

波特率

USART_BRR波特率寄存器

$$
Tx/Rx Baudrate= \frac{f_
}{(16*USARTDIV)}
$$

$f_$串口时钟,APB1或APB2
例子
image.png

程序代码

1.初始化GPIO