半满中断误触发通常源于DMA传输过半标志(HTIF)在帧边界被置位,而帧尚未结束。核心处理原则:不要在半满中断里做帧解析,只做“数据搬运/拷贝”或置标志。推荐做法:1) 使能DMA双缓冲或循环模式,半满中断仅将前半缓冲区数据拷贝到环形缓冲,不触发帧处理;2) 空闲中断(IDLE)才是帧结束判据,在IDLE中断里读取DMA剩余计数NDTR,计算本帧长度=缓冲区大小-NDTR-上次偏移,再统一解析;3) 若半满时确实收到完整帧(帧长恰好跨过半满点),可在HT中断中记录“已处理偏移”,IDLE中断里从该偏移继续,避免重复解析;4) 对半满误触发可加软件滤波:检查NDTR是否变化、检查接收引脚电平是否持续空闲,或直接关闭HT中断,仅用IDLE+轮询NDTR,牺牲一点实时性换取稳定。关键点:HT中断只搬运不解析,IDLE中断做帧定界,用偏移量防重复。
mcuku 阿沐 · 2026-10-20