你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
起个啥名啊 提问时间:2023-6-19 21:13 / 已解决

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

image.png

image.png

收藏 评论3 发布时间:2023-6-19 21:13

举报

3个回答
butterflyspring 最优答案 回答时间:2023-6-20 11:45:42
基于HAL库的程序正常顺序应该是先调用 MX_DMA_Init() 再调用MX_ADC1_Init();
因为MX_DMA_Init() 中有使能时钟的操作。如果时钟没有先打开,寄存器就操作不成功。
楼主可以注意一下这一点,必要时手动调整一下初始化顺序。
起个啥名啊 回答时间:2023-6-20 21:11:58

butterflyspring 发表于 2023-6-20 11:45
基于HAL库的程序正常顺序应该是先调用 MX_DMA_Init() 再调用MX_ADC1_Init();
因为MX_DMA_Init() 中有使 ...

非常感谢,确实是你说的这个问题导致的

image.png

而且我测试了一下,如果配置ADC但不启用DMA生成代码,然后再启用DMA再次生产代码,就会出现DMA初始化在ADC初始化之后的问题

xmshao 回答时间:2023-6-21 08:45:45
这个有关DMA及相应外设配置顺序问题,在本论坛也咨询和回复多次了。


一方面靠我们自己多关注、多积累;


另一方面,ST 当前最新版本基本排除了该问题,尽量使用最新版CubeMx


来着手配置。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版