寄存器
USART control register 1 (USART_CR1)
-
bit 28 M1 字长
- 该位和第 12 位(M0)为单位,决定字长。它是由软件设置或清除的
- M[1:0] = 00:1 个起始位,8 个数据位,n 个停止位
- M[1:0] = 01:1 个起始位,9 个数据位,n 个停止位
- M[1:0] = 10:1 个起始位,7 个数据位,n 个停止位
- 该位仅在 USART被禁用(UE=0)时写入
-
bit 27 EOBIE:块中断结束启用
-
bit 26 RTOIE:接收机超时中断启用
-
bit 25-21 DEAT[4:0]:驱动 启用断言时间
-
bit 20-16 DEDT[4:0]:驱动程序启用取消断言时间
-
bit 15 OVER8:过采样模式
-
bit 14 CMIE:字符匹配中断启用
-
bit 13 MME:静音模式启用
- 0:接收机永久处于主动模式
- 1:接收机可在静音模式和主动模式之间切换
-
bit 12 M0 位:字长
-
bit 11 唤醒:接收机唤醒方法
-
bit 10 PCE:奇偶校验控制启用
-
bit 9 PS:奇偶校验选择
-
bit 8 PEIE:PE 中断启用
-
bit 7 TXEIE:中断启用
-
bit 6 TCIE:传输完成中断启用 该位由软件设置并清除
-
bit 5 RXNEIE:RXNE 中断启用
-
bit 4 IDLEIE:IDLE 中断启用
-
bit 3 TE:发射机启用
-
bit 2 RE:接收机启用
-
bit 1 UESM:停止模式下启用 USART
-
bit 0 UE :使能 USART
USART control register 2 (USART_CR2)
-
bit 31-28 ADD[7:4]: Address of the USART node
-
bit 27-24 ADD[3:0]: Address of the USART node
-
bit 23 RTOEN:接收机超时启用
-
bit 22-21 ABRMOD[1:0]:自动波特率模式
-
bit 15 SWAP: Swap TX/RX pins 交换 TX/RX 引脚
-
bit 14 LIN 模式启用
-
bit 13-12 STOP[1:0]: STOP bits
- 00: 1 stop bit
- 01: 0.5 stop bit
- 10: 2 stop bits
- 11: 1.5 stop bits
-
bit 11 CLKEN:时钟启用
-
bit 10 CPOL:时钟极性
-
bit 9 CPHA:时钟相位
-
bit 8 LBCL:最后一位时钟脉冲
-
bit 6 LBDIE:LIN 断开检测中断启用
-
bit 5 LBDL:LIN 断裂检测长度
-
bit 4 ADDM7:7 位地址检测/4 位地址检测
USART control register 3 (USART_CR3)
-
bit 22 WUFIE:从停止模式唤醒中断启用 该位由软件设置并清除
- 0:中断被抑制
- 1:当 USART_ISR 寄存器中 WUF=1 时,生成 USART 中断
-
bit 21:20 WUS[1:0]:从停止模式中断标志选择唤醒
- 00:地址匹配时 WUF 激活(由ADD[7:0]和 ADDM7 定义)
- 10:开始比特检测时 WuF 激活
- 11:RXNE 上 WUF 激活
-
bit 19-17 SCARCNT[2:0]:智能卡自动重试计数
-
bit 15 DEP:驱动启用极性选择
-
bit 14 DEM:驱动启用模式
-
bit 13 DDRE:接收错误时禁用 DMA
-
bit 12 OVRDIS:溢出 禁用
-
bit 11 ONEBIT:单样本位方法启用
-
bit 10 CTSIE:启用 CTS 中断
-
bit 9 CTSE:CTS 启用 硬件控制流 输入
-
bit 8 RTSE:RTS 启用 硬件控制流
-
bit 7 DMAT:DMA 启用发射机
-
bit 6 DMAR:DMA 启用接收机
-
bit 5 SCEN:智能卡模式启用
-
bit 4 NACK:智能卡 NACK 启用
-
bit 3 HDSEL:半双工选择
-
bit 2 IRLP:IrDA 低功耗
-
bit 1 IREN:启用 IrDA 模式
-
bit 0 EIE:错误中断启用
USART baud rate register (USART_BRR) 波特率
-
bit 15-4 BRR
- BRR[15:4] = USARTDIV[15:4]
-
bit 3-0 BRR
- 当 OVER8 = 0 时,BRR[3:0] = USARTDIV[3:0]
- 当OVER8 = 1 时:BRR[2:0] = USARTDIV[3:0] 向右移动1 位
- BRR[3]必须保持清空。
USART guard time and prescaler register (USART_GTPR)
- bit 15-8 GT[7:0]:守护时间值 智能卡模式
- bit 7:0 PSC[7:0]:预分频器值
USART receiver timeout register (USART_RTOR) 超时寄存器
- bit 31-24 BLEN[7:0]:块长度
- bit 23:0 RTO[23:0]:接收端超时值
USART request register (USART_RQR) 请求寄存器
USART interrupt and status register (USART_ISR)中断和状态寄存器
- bit 22 REACK:接收 启用确认标志
- bit 21 TEACK:发送 启用确认标志
- bit 20 WUF:从停止模式标志唤醒
- bit 19 RWU:接收机从静音模式唤醒
- bit 18 SBKF:发送中断标志
- bit 17 CMF:字符匹配标志
- bit 15 BUSY: Busy flag
- bit 14 ABRF:自动波特率标志
- bit 12 EOBF:块标志结束 如果不支持智能卡模式,该位被保留并保持在复位值
- bit 11 RTOF:接收机超时
- bit 10 CTS:CTS 标志
- bit 9 CTSIF:CTS 中断标志
- bit 8 LBDF:LIN 断裂检测标志
- bit 7 TXE:传输数据寄存器为空
- bit 6 TC:传输完成
- bit 5 RXNE:读取数据寄存器未空
- bit 4 IDLE: Idle line detected
- bit 3 ORECF:超载错误清除标志
- bit 2 NCF:检测到噪声,清除标志
- bit 1 FECF:框架错误清除标志
- bit 0 PECF:奇偶误差清除标志
USART interrupt flag clear register (USART_ICR)中断清除寄存器
- bit 20 WUCF:从停止模式唤醒 清除标志
- bit 17 CMCF:角色匹配清除标志
- bit 12 EOBCF:块清除标志结束
- bit 11 RTOCF:接收机超时清除标志
- bit 9 CTSCF:CTS 清除标志
- bit 8 LBDCF:LIN 断裂检测清除标志
- bit 6 TCCF:传输完全清除标志
- bit 4 IDLECF:检测到空闲线路,清除标志
- bit 3 ORECF:超载错误清除标志
- bit 2 NCF:检测到噪声,清除标志
- bit 1 FECF:框架错误清除标志
- bit 0 PECF:奇偶误差清除标志
USART receive data register (USART_RDR) 接收寄存器
USART transmit data register (USART_TDR) 传输寄存器
代码流程讲解
初始化中断
/* USART1 interrupt Init */
HAL_NVIC_SetPriority(USART1_IRQn, 10, 0);
HAL_NVIC_EnableIRQ(USART1_IRQn);
/* USER CODE BEGIN USART1_MspInit 1 */
__HAL_UART_ENABLE_IT(&huart1, UART_IT_RXNE);
__HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE);
__HAL_UART_CLEAR_IT(&huart1, UART_IT_RXNE);
__HAL_UART_CLEAR_IT(&huart1, UART_CLEAR_IDLEF);
/* USER CODE END USART1_MspInit 1 */
数据接收和转发
void USART1_IRQHandler(void)
{
if (__HAL_UART_GET_IT(&huart1, UART_IT_IDLE))
{
message1 = 1;
__HAL_UART_CLEAR_IT(&huart1, UART_CLEAR_IDLEF);
}
else if (__HAL_UART_GET_IT(&huart1, UART_IT_RXNE))
{
message2 = 1;
HAL_UART_Receive(&huart1, (uint8_t *)&ch[ch_size], 1, 0xffff);
if(ch_size >= (RXBUFFERSIZE - 1))
ch_size = 0;
else
ch_size++;
}
}
空闲中断信息来之后才整块发送到电脑端串口(huart2),RXNE中断读取数据即可清除
效果展示


|