USART - 串口通信
串口通信 - USART
常用术语
- 上位机 - 数据处理
- 下位机 - 收集数据
- 全双工 - 同时 收/发
- 半双工 - 不同时 收/发
- 单工 - 单向
- 异步通信
- 同步通信
特点
- 串行
- 全双工
- 异步
控制寄存器(USART_CRx)
- STM32F4xx中文参考手册 - 714

| 常用 | 功能 | 常用值 |
|---|---|---|
| OVER8 | 过采样模式 | 0 |
| UE | 使能位 | 1 |
| M | 字长选择位 | 0 |
| PCE | 校验使能位 | 0 |
| PS | 校验位选择位 | 0 |
| TXIE | 发送缓冲区空中断使能位 | 1 |
| TCIE | 发送完成中断使能位 | 1 |
| RXNEIE | 接受缓冲区非空中断使能 | 1 |
| TE | 发送使能位 | 1 |
数据寄存器 (USART_DR)
- STM32F4xx中文参考手册 - 713
Data register
偏移地址:0x04
复位值:0xXXXX XXXX
位 31:9 保留,必须保持复位值
位 8:0 DR[8:0]:数据值
状态寄存器(USART_SR)
- STM32F4xx中文参考手册 - 716

| 常用 | 功能 | 值 |
|---|---|---|
| RXNE | 读数据寄存器非空 - 需要读取 | 1 |
| TC | 发送完成 | 1 |
固件库编程
USART_Init
void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct)
功能:
- 串口参数初始化(波特率/停止位等)
参数:
USART_TypeDef *- 执行寄存器基地址USART_InitTypeDef- 参数结构体
返回:
- 无
补充:
USART_TypeDef * USARTx: where x can be 1, 2, 3, 4, 5, 6, 7 or 8 to select the USART or UART peripheral.
typedef struct
{
uint32_t BaudRate; //波特率
uint32_t WordLength; //字长
uint32_t StopBits; //停止位
uint32_t Parity; //奇偶校验
uint32_t Mode; //收/发模式设置
uint32_t HwFlowCtl; //硬件流设置
uint32_t OverSampling; //过采样设置
} UART_InitTypeDef
USART_ReceiveData
uint16_t USART_ReceiveData(USART_TypeDef* USARTx)
功能:
- 接受-特定-位数-数据 DR寄存器
参数:
USART_TypeDef *- 执行寄存器基地址
返回:
(uint16_t)(USARTx->DR & (uint16_t)0x01FF)
USART_SendData
void USART_SendData(USART_TypeDef* USARTx, uint16_t Data)
功能:
- 发送-特定-位数-数据 DR寄存器
参数:
USART_TypeDef *- 执行寄存器基地址uint16_t- 发送数据
返回:
- 无
USART_GetFlagStatus
FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG)
功能:
- 查找 - 特定 - 位置 - 数值 SR寄存器
参数:
USART_TypeDef *- 执行寄存器基地址uint16_t- SR寄存器的特定位置
返回:
FlagStatusRESET-0SET-!RESET
补充:
* @param USART_FLAG: specifies the flag to check.
* This parameter can be one of the following values:
* @arg USART_FLAG_CTS: CTS Change flag (not available for UART4 and UART5)
* @arg USART_FLAG_LBD: LIN Break detection flag
* @arg USART_FLAG_TXE: Transmit data register empty flag
* @arg USART_FLAG_TC: Transmission Complete flag
* @arg USART_FLAG_RXNE: Receive data register not empty flag
* @arg USART_FLAG_IDLE: Idle Line detection flag
* @arg USART_FLAG_ORE: OverRun Error flag
* @arg USART_FLAG_NE: Noise Error flag
* @arg USART_FLAG_FE: Framing Error flag
* @arg USART_FLAG_PE: Parity Error flag

浙公网安备 33010602011771号