GD32F4无法使用STM32CubeMx生成代码进行串口DMA中断接收

本文介绍使用GD32F4替换STM32F4过程中遇到的串口DMA+空闲中断接收问题。GD32F4在未使能DMA时钟的情况下无法正常工作,而STM32F4则不受此限制。通过对比DMA寄存器状态发现GD32F4的地址自动增加和循环模式未能正确配置。

使用GD32F4替换STM32F4,理论上大部分代码都可以兼容,测试串口DMA+空闲中断接收时发现DMA无法收到数据,DMA计数器没有增加,通过对比运行状态时的DMA寄存器状态,观察到GD32的DMA的地址自动增加和循环模式没有被正确置位。

检查代码发现CubeMX生成的代码在设置串口DMA接收之前没有使能DMA,在初始化之前,先使能DMA的RCC时钟后即可正常使用。

STM32可以在未初始化外设模块时钟时,修改其寄存器设置,GD32则必须要先使能外设时钟后才能设置对应的控制寄存器值。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值