关于UART

UART是一种全双工,异步,点对点的通讯协议
他主要靠设备之间互相约定传输频率没有固定的时钟信号来确认同步
而且设备之间没有明确的主从之分
连接最少只要3个线
TX — RX
RX — TX
GND — GND
设备自己解决供电问题就可以通讯了
参考代码
| 串口外设 | TX 引脚 | RX 引脚 | RTS 引脚 | CTS 引脚 | 备注 |
|---|---|---|---|---|---|
| USART1 | PA9 | PA10 | PA12 | PA11 | 最常用,挂载 APB2 高速总线,支持硬件流控 |
| USART2 | PA2 | PA3 | PA1 | PA0 | 挂载 APB1 低速总线,支持硬件流控 |
| USART3 | PB10 | PB11 | PB14 | PB13 | 挂载 APB1 低速总线,支持硬件流控 |
| UART4 | PC10 | PC11 | - | - | 仅异步,大容量型号支持,无硬件流控 |
| UART5 | PC12 | PD2 | - | - | 仅异步,大容量型号支持,无硬件流控 |
初始化串口
1 | void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct) |
| 参数 | 数据类型 | 作用 | 选项 |
|---|---|---|---|
| USART_TypeDef* USARTx | — | 选择串口组 | USART1 ··· USART5 |
| USART_InitTypeDef* USART_InitStruct | 结构体 | — | — |
| 返回值 | 无 | 无 | 无 |
| 结构体成员 | 含义 | 常用可选值 |
|---|---|---|
USART_BaudRate |
波特率 | 任意正整数(如 115200、9600) |
USART_WordLength |
数据位长度 | USART_WordLength_8b(8 位,常用)USART_WordLength_9b(9 位) |
USART_StopBits |
停止位个数 | USART_StopBits_1(1 位,常用)USART_StopBits_2(2 位) |
USART_Parity |
校验位 | USART_Parity_No(无校验,常用)USART_Parity_Even(偶校验)USART_Parity_Odd(奇校验) |
USART_Mode |
串口工作模式 | USART_Mode_Tx(仅发送)USART_Mode_Rx(仅接收)USART_Mode_Tx | USART_Mode_Rx(收发一体,常用) |
USART_HardwareFlowControl |
硬件流控 | (无流控,常用) USART_HardwareFlowControl_None (硬件流控相当多了CTS和RTS引脚) USART_HardwareFlowControl_RTS USART_HardwareFlowControl_CTS USART_HardwareFlowControl_RTS_CTS |
开启串口
1 | void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState) |
| 参数 | 数据类型 | 作用 | 选项 |
|---|---|---|---|
| USART_TypeDef* USARTx | — | 选择串口组 | USART1 ··· USART5 |
| FunctionalState NewState | — | ENABLE DISABLE |
开启或关闭 |
| 返回值 | 无 | 无 | 无 |
发送数据
1 | void USART_SendData(USART_TypeDef* USARTx, uint16_t Data) |
| 参数 | 数据类型 | 作用 | 选项 |
|---|---|---|---|
| USART_TypeDef* USARTx | — | 选择串口组 | USART1 ··· USART5 |
| uint16_t Data | uint16_t | 发送数据包 | 0x0000 - 0xFFFF(若配置为 8 位数据字长, 实际有效数据为低 8 位,范围 0x00 - 0xFF) |
| 返回值 | 无 | 无 | 无 |
接受数据
1 | uint16_t USART_ReceiveData(USART_TypeDef* USARTx) |
| 参数 | 数据类型 | 作用 | 选项 |
|---|---|---|---|
| USART_TypeDef* USARTx | — | 选择串口组 | USART1 ··· USART5 |
| 返回值 | uint16_t | 接收数据包 | 0x0000 - 0xFFFF(若配置为 8 位数据字长, 实际有效数据为低 8 位,范围 0x00 - 0xFF) |
RS232、RS422、RS485定义
RS232:点对点、全双工、距离短、抗干扰弱
RS422:差分传输、全双工、距离远、只能 1 发多收
RS485:差分传输、半双工、距离远、支持多机联网(工业最常用)
