adc+dma采样,代码是通过cubemx生成的,调试时发现adc通过dma采集到的数据不对,通过单步仿真发现在HAL_DMA_Init函数中配置dma的CR寄存器没有生效,但是在dma初始化完成后再对cr寄存器赋值就有效了,这是hall库的bug还是我的使用方法不对,用clion开发的 |
基于HAL库的程序正常顺序应该是先调用 MX_DMA_Init() 再调用MX_ADC1_Init(); 因为MX_DMA_Init() 中有使能时钟的操作。如果时钟没有先打开,寄存器就操作不成功。 楼主可以注意一下这一点,必要时手动调整一下初始化顺序。
基于HAL库的程序正常顺序应该是先调用 MX_DMA_Init() 再调用MX_ADC1_Init(); 因为MX_DMA_Init() 中有使 ...
非常感谢,确实是你说的这个问题导致的 而且我测试了一下,如果配置ADC但不启用DMA生成代码,然后再启用DMA再次生产代码,就会出现DMA初始化在ADC初始化之后的问题