ST意法半导体
直播中

最强海贼王

9年用户 1456经验值
擅长:MEMS/传感技术
私信 关注
[问答]

STM32F446使用DMA UART时没有任何反应的原因?

我们想在传输 DMA 模式下使用 UART 外设。使用 CubeMX 配置它时,没有任何反应,在空项目上尝试时发生事件。
在为内存和外设数据寄存器之间的 DMA 传输手动配置各种寄存器时,行为是正确的,所以我怀疑 HAL 库有问题。
我将错误追踪到 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c 中的函数 HAL_DMA_Init
以下行(第 251 行)应该为适当的 DMA 流设置配置寄存器:
hdma->实例->CR = tmp;
但是,当单步调试时,它似乎对寄存器没有影响(如 SFR 选项卡所示),即使 tmp 变量具有正确的值......这怎么解释?一个奇怪的硅错误,不允许在单片机的特定状态下设置寄存器?库中的错误?
同时,我们可以从主函数中设置 DMA 流 CR 寄存器。
也许值得一提的是,该问题出现在两个不同的 MCU 上。









回帖(1)

杜元晓

2023-2-8 15:04:22
实际上,我将 STM32CubeIDE(和 cubeMX)更新到最新版本,问题不再存在,因此不需要解决方法。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分