STM32单片机 空闲中断

空闲中断是DMA异步接收的"帧完成"信号。当串口总线空闲时长超过一个字节,硬件便认定一帧完整数据发送结束,随即产生中断。CPU在中断服务函数中快速计算帧长、取走数据并立即重启DMA,随后通过标志位通知主循环处理。主循环处理完毕,清除标志,继续自身任务。若发送端发送的数据因缺少结尾空闲信号而成为"半截帧",空闲中断不会触发,此时由超时机制兜底:每次收到新字节就刷新超时定时器,若定时器溢出,则判定接收超时,强制取走缓冲区中的残留数据,确保数据不遗漏。

DMA一旦配置并启动,就会一直处于"待命"工作状态,无论发送端是否有数据传来。

我们可以将之前"自动传送带"的比喻再延伸一下,来精准理解这个"一直工作"的两种状态:

  1. 空转待命(无数据时):传送带(DMA)的电源是开着的,它时刻准备着。但没有货物(数据)触发入口传感器,传送带就静止不动,安静地等待,几乎不消耗任何CPU资源。

  2. 即刻响应(有数据时) :当一个字节数据到达(好比一个货物被放上传送带入口),硬件外设本身就会瞬间给DMA一个触发信号,传送带精确地转一下,把这个字节送到内存的指定位置。整个搬运过程完全不需要CPU参与。

所以,DMA一直"在工作"是指它始终处于一种"随时待命、自动响应"的硬件电路中,而不是在空转耗能。它就像一个敬业的门卫,永远在岗,但只在有人进出时才行动。

相关推荐
KaifuZeng20 小时前
运算放大器学习笔记-虚短和虚断
单片机·嵌入式硬件·运算放大器
张海森-16882021 小时前
cv610的spi0上适配tmi8150b电机ic
单片机
硅农程序猿21 小时前
芯片设计中的门级仿真(GLS):从零延迟验证到 SDF 时序反标
嵌入式硬件·硬件架构·risc-v·芯片
智购科技智能售货柜1 天前
自动售货机主控方案怎么选?——单片机、树莓派、ESP32的实战对比~YH
单片机·嵌入式硬件
米饭不加菜1 天前
电平转换电路
经验分享·嵌入式硬件·硬件工程
老k一步步来1 天前
STM32 HAL库CAN通信核心函数详解,参数以及作用
stm32·单片机·嵌入式硬件
gwf2162 天前
SSD读写速度深度解析:顺序读写vs随机读写、IOPS、延迟,你的硬盘性能到底怎么看?
git·嵌入式硬件·缓存·github·智能硬件
Freak嵌入式2 天前
版本混乱 / 依赖缺失?uPyPi:MicroPython 版 PyPI,彻底解决库管理混乱
linux·服务器·数据库·单片机·嵌入式硬件·性能优化·依赖倒置原则
wuyk5552 天前
77.嵌入式 C 语言中 enum 枚举的工程化实践:告别魔法数字,提升代码可维护性
c语言·开发语言·stm32·单片机·嵌入式硬件