在STM32开发中,DMA(直接存储器访问)是提升系统性能的利器,但不少开发者因配置顺序错误导致功能异常。本文将解析DMA核心机制,并重点说明配置顺序的关键要点。
一、为什么配置错误?
典型错误场景:
某开发者先初始化DMA,再配置USART,结果串口无输出。问题根源在于:DMA初始化时尝试访问未开启时钟的USART寄存器,导致总线异常。
正确顺序原则:
时钟先行:先开启外设时钟,再配置相关寄存器
被依赖者优先:如DMA需操作USART寄存器,必须先初始化USART
硬件保护机制:STM32外设寄存器在时钟未开启时访问会触发硬件异常
二、关键配置步骤拆解
以USART接收DMA配置为例:
时钟配置

2. 外设初始化

3. DMA配置

4. 关联配置

三、常见配置误区
通道冲突:
错误:未检查DMA请求映射表,随意选择通道
正确:STM32F103的USART1_RX固定使用DMA1通道4(参考芯片手册)
地址递增错误:
错误:接收数据时禁用内存地址递增
正确:循环缓冲区必须启用MINC(Memory Increment)
模式选择错误:
错误:对连续数据流使用普通模式
正确:ADC连续采样应配置CIRC(Circular Mode)
四、调试技巧
时钟检查:
通过RCC->AHBENR和RCC->APBxENR寄存器确认时钟状态
中断验证:
配置DMA传输完成中断,通过逻辑分析仪抓取中断信号
寄存器回读:
配置后读取DMA_CNDTR寄存器,确认传输计数器是否被正确写入
本文凡亿教育原创文章,转载请注明来源!

扫码关注











































