Bootstrap

STM32HAL——USART系列

UART

硬件控制(RTS/CTS)

RTS (Require ToSend,发送请求)为输出信号,用于指示本设备准备好可接收数据,低电平有效,低电平说明本设备可以接收数据。

CTS (Clear ToSend,发送允许)为输入信号,用于判断是否可以向对方发送数据,低电平有效,低电平说明本设备可以向对方发送数据。

两者可在 HAL 中选择是否启用。(由硬件接口判断,并且注意在串口监视软件中设置相应的 Hardware Control )由于是硬件接口,无需修改软件层面。

中断控制

涉及 USART 的中断事件表

Interrupt Event Event Flag Enable Control Bit
TransmitData Register Empty TXE TXEIE
Clear To Send (CTS) flag CTS CTSIE
Transmission Complete TC TCIE
Received Data Ready to be Read RXNE RXNEIE
Overrun Error Detected ORE RXNEIE
Idle LineDetected IDLE IDLEIE
Parity Error PE PEIE
BreakFlag LBD LBDIE
Noise Flag, Overrun error and Framing Error in multi buffer communication NF or ORE or FE EIE

以上任意一个中断事件发生,都会进入 USARTX_IRQHandler 函数。这里需要用户自己判断标志位(具体可以参考 HAL 库做法)并处理相应中断,然后清除标志位

HAL

HAL 库实现 UART_HandleTypeDef 作为一个 UART 实例。

总的传诵方式分为三种:DMA、IT、阻塞传输。

阻塞传输:

HAL_UART_TransmitHAL_UART_Receive是阻塞传输。两个函数都会传入一个Size,为接受/发送数据的长度。待传送字符串传递完后执行下一行代码。

阻塞传输注意超时设置,这个会由于硬件关系而有不同,数量级在千级别。

中断传输:

HAL_UART_Transmit_ITHAL_UART_Receive_IT是非阻塞传输。 HAL 开启中断传送,并将 UART 设置位忙碌状态(供其余函数查询是否传输完毕)。

中断传输会调用回调函数。HAL_UART_TxCpltCallbackHAL_UART_TxHalfCpltCallbackHAL_UART_RxCpltCallback

;