在STM32的低功耗模式下(如STOP模式),BDMA(Bus DMA)可独立于CPU工作,用于搬运外设数据(如ADC、UART)到内存,且不唤醒CPU。关键配置:1)选择支持BDMA的外设(如ADC1、UART4/5等,参考参考手册的BDMA请求映射);2)在进入低功耗前,初始化BDMA通道,设置外设地址、内存地址、传输长度,并启用循环模式(若需连续传输);3)配置外设的DMA请求源,并确保外设时钟在低功耗模式下保持开启(如使用LSE或HSI作为外设时钟源);4)进入STOP模式时,使用WFI或WFE,但需确保BDMA时钟(通过RCC的BDMA时钟使能)和外设时钟不受影响;5)传输完成后,可通过BDMA中断或事件唤醒CPU(若需要),否则保持静默。实操建议:先验证外设时钟在STOP模式下的行为,避免外设因时钟关闭而失效;使用CubeMX配置BDMA,并检查低功耗模式下的电源配置(如PWR_CR的MRLVDS)。注意:BDMA不能访问所有内存区域,需确保目标内存位于SRAM1/2或备份SRAM中。
mcuku 阿沐 · 2026-08-27