串口不定长接收
背景在用HTTP通过ESP8266给STM32传输.bin文件时碰到接收数据被覆盖等问题终极方案DMA循环模式空闲中断半满中断环形缓冲区超时机制整体架构超时判断帧结束各组件职责组件触发条件职责判帧DMA 循环模式硬件自动DMA数据搬运无需CPU参与且调用一次接收就行DMA缓冲区满了会自动重头写。—HT 半满中断DMA 写到 128 字节搬走前半段数据防止一帧数据超过DMA缓冲区导致前面数据被覆盖❌提前搬走前半段TC全满写到 buf[255]每 256 字节一次✅ 用搬走后半段和 HT 形成接力IDLE 空闲中断RX 空闲 1 字节时间搬最后一段数据重置定时器❌超时定时器IDLE 中断里重置计数值防止空闲中断误判可能一帧里会有微弱间隔超时后判定帧真正结束✅环形缓冲区HT/IDLE 写main 读防止读写速度不一致解耦生产者和消费者速度—
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2576144.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!