久芯网

stm32f401使用hall库HAL_DMA_Init中DMA_SxCR寄存器的配置无效

avatar 起个啥名啊 提问时间: 2023-06-29 08:28:02 / 已解决

adc+dma采样,代码是通过cubemx生成的,调试时发现adc通过dma采集到的数据不对,通过单步仿真发现在HAL_DMA_Init函数中配置dma的CR寄存器没有生效,但是在dma初始化完成后再对cr寄存器赋值就有效了,这是hall库的bug还是我的使用方法不对,用clion开发的

stm32f401使用hall库HAL_DMA_Init中DMA_SxCR寄存器的配置无效 [相关图片]

stm32f401使用hall库HAL_DMA_Init中DMA_SxCR寄存器的配置无效 [相关图片]


如需获得 stm32f401 等器件的更多信息,请点击链接或 点击此处 联系在线客服!

2个回答
  • avatar butterflyspring
    最佳答案
    回答时间: 2023-06-29 08:54:24

    基于HAL库的程序正常顺序应该是先调用 MX_DMA_Init() 再调用MX_ADC1_Init(); 因为MX_DMA_Init() 中有使能时钟的操作。如果时钟没有先打开,寄存器就操作不成功。 楼主可以注意一下这一点,必要时手动调整一下初始化顺序。

  • avatar 起个啥名啊
    回答时间: 2023-06-29 09:21:30
    butterflyspring 发表于 2023-6-20 11:45
    基于HAL库的程序正常顺序应该是先调用 MX_DMA_Init() 再调用MX_ADC1_Init(); 因为MX_DMA_Init() 中有使 ...

    非常感谢,确实是你说的这个问题导致的 而且我测试了一下,如果配置ADC但不启用DMA生成代码,然后再启用DMA再次生产代码,就会出现DMA初始化在ADC初始化之后的问题

会员中心 微信客服
客服
回到顶部