STM32H7的ADC连续采样配合DMA双缓冲(循环模式)时,避免数据覆盖与半传输中断丢失的关键配置如下:1) 使用DMA的循环模式(Circular)并启用双缓冲(Double Buffer Mode),设置两个内存缓冲区(如buf0和buf1),通过DMA_SxM0AR和DMA_SxM1AR指定。2) 使能半传输中断(HT)和传输完成中断(TC),在中断中及时处理数据。3) 为避免中断丢失,应确保中断服务程序执行时间远小于半缓冲区采样时间,或使用DMA的“双缓冲”切换机制:当DMA填充buf0时,CPU处理buf1,反之亦然。4) 若ADC采样率很高,建议将DMA中断优先级设为最高,并关闭其他高优先级中断。5) 使用DMA的“当前目标”寄存器(如DMA_SxCR的CT位)判断当前活动缓冲区,避免误处理。6) 若仍可能丢失,可启用DMA的FIFO或使用MDMA。注意:STM32H7的DMA(BDMA/DMA1/DMA2)需正确配置数据流和通道,并确保ADC的DMA请求使能。
mcuku 阿沐 · 2026-10-12