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_Transmit 与 HAL_UART_Receive是阻塞传输。两个函数都会传入一个Size,为接受/发送数据的长度。待传送字符串传递完后执行下一行代码。
阻塞传输注意超时设置,这个会由于硬件关系而有不同,数量级在千级别。
中断传输:
HAL_UART_Transmit_IT 与 HAL_UART_Receive_IT是非阻塞传输。 HAL 开启中断传送,并将 UART 设置位忙碌状态(供其余函数查询是否传输完毕)。
中断传输会调用回调函数。HAL_UART_TxCpltCallback 、<

本文详细介绍了STM32的USART硬件控制(RTS/CTS)、中断控制以及HAL库中的DMA传输。重点讲解了DMA控制器的工作阶段、配置及在STM32F1和F4中的差异,并提供了CubeMX配置示例。还提到了实验记录和如何修改相关函数以适应不同需求。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



