在STM32 DMA半传输中断(HT)与传输完成中断(TC)中处理边界数据,核心是确保数据一致性,避免重复或丢失。实操建议:1)配置DMA为循环模式或正常模式,并启用HT和TC中断;2)在HT中断中处理缓冲区前半部分(如地址0到size/2-1),在TC中断中处理后半部分(size/2到size-1),但需注意:若使用循环模式,TC后DMA自动回绕,此时应使用双缓冲或手动切换缓冲区指针;3)关键点:在中断服务程序中,先读取DMA的CNDTR寄存器(剩余传输计数)确认实际传输位置,再处理数据,防止因中断延迟导致边界错位;4)对于非2的幂次大小,建议将缓冲区大小设为2的幂次,或使用DMA的FIFO和突发模式对齐;5)若需精确到字节,可结合定时器或外部触发同步,但通常HT/TC足够。推荐使用STM32CubeMX生成代码,并开启DMA的“Half Transfer”和“Transfer Complete”回调,在回调中加临界区保护(如关中断)处理数据。
mcuku 阿沐 · 2026-08-27