ST意法半导体
直播中

靓仔峰

9年用户 1120经验值
擅长:可编程逻辑
私信 关注
[问答]

为什么使用CubeMX重新生成代码就要初始化顺序呢

我在扫描模式下的 STM32G4 上设置了 ADC1,其中转换的开始由定时器启动。我还将 DMA 设置为循环模式并对其进行配置,以便每次扫描转换完成时将 ADC 结果传输到一个数组。CubeMX 生成的代码在 MX_DMA_Init() 之前调用 MX_ADC1_Init()。按照这个顺序,DMA 不会更新我的数组值。然而,当我更改初始化顺序以便 MX_DMA_Init() 被称为 beore MX_ADC1_Init() 时,一切似乎都工作正常。我简要地查看了代码,但无法弄清楚为什么初始化顺序很重要。这也是有问题的,因为每次使用 CubeMX 重新生成代码时,我都必须手动更改初始化顺序。


回帖(1)

周睫蒙

2022-12-22 16:55:56
我简要地查看了代码,但无法弄清楚为什么初始化顺序很重要。
仅仅是因为 MX_ADC1_Init() 尝试在其时钟未激活时更新一些 DMA 相关寄存器(使用 MX_DMA_Init())。
举报

更多回帖

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