配置STM32F4的ADC+DMA双缓冲,核心是启用DMA循环模式(Circular Mode)并设置两个内存缓冲区,同时利用DMA的半传输和传输完成中断。具体:1) 初始化DMA时,将DMA_InitStructure.DMA_Mode设为DMA_Mode_Circular,DMA_BufferSize设为采样点数(如100),DMA_Memory0BaseAddr指向Buffer1,DMA_Memory1BaseAddr指向Buffer2(需在DMA_Init后调用DMA_DoubleBufferModeConfig)。2) 在DMA中断回调中,通过DMA_GetCurrentMemoryTarget判断当前使用哪个缓冲区,处理另一个缓冲区数据。3) 确保ADC采样频率与DMA传输速率匹配,避免溢出;若采样率过高,可降低ADC时钟分频。4) 在中断服务函数中快速拷贝数据,避免阻塞。实操建议:先用逻辑分析仪验证中断触发时序,再优化中断处理代码。
mcuku 阿沐 · 2026-08-27