超时中断 (Timeout Interrupt - RTO, Receiver Timeout)
触发条件:
当最后一次成功接收到一个字符后(RXNE 事件后),在预设的超时时间内没有接收到任何新的字符时,硬件会产生超时中断。
工作原理:
每次成功接收一个字节(RXNE 置位)后,一个可配置的超时计数器就会重置并开始递减计数。
如果在计数器递减到 0 之前,又成功接收到下一个字节(产生新的 RXNE 事件),则计数器再次重置并重启递减。
如果计数器递减到 0(意味着自上次收到一个字节后,已经过了预设的超时时间),硬件就会置位超时中断标志位。
关键特点:
基于时间间隔: 检测的是字符间的时间间隔。
可配置的超时间隔: 超时时间完全可配置(通常是基于波特率的倍数,例如 1/4/8/16/32/64 个字符时间)。这提供了极大的灵活性。
指示接收静默: 表示接收通道在配置的时间段内没有收到新数据。这可以用来标识:
一个包含内部间隔(如空格、逗号)的数据帧的结束(例如,一个完整的文本行或 GPS 语句)。
一个连续数据块的结束(功能上类似于空闲中断,但超时时间可调)。
通信中断或对方停止发送。
优点:
高度灵活: 可配置的超时时间使其能适应多种协议。
容忍帧内间隔: 可以处理帧内存在自然间隔(如文本协议中的空格)的情况,只要间隔时间小于设定的超时时间,就不会中断帧的接收。
更精确控制: 对接收过程的控制更精细。
缺点:
配置相对复杂(需要设置超时时间)。
需要硬件支持(较新的 MCU 如 STM32 的某些系列才提供)。
|