搜索
查看: 4662|回复: 7

[已解决] F334 dma方式获取adc程序卡死问题

[复制链接]

该用户从未签到

1

主题

3

帖子

0

蝴蝶豆

新手上路

最后登录
2019-10-13
发表于 2019-10-9 02:02:36 | 显示全部楼层 |阅读模式
如题 使用stm32cube生成代码 打开两个adc通道 配置为dma方式获取数据 程序与cube配置见下图
具体问题表现为调试模式下观察adcdma读取值有变化 counter值无变化 while1中循环语句不执行 循环体内打断点无反应 注释掉HAL_ADC_Start_DMA后能正常进循环
请懂的人指点一二,谢谢!
TIM截图20191009015449.png
TIM截图20191009020145.png
TIM截图20191009020026.png
回复

使用道具 举报

该用户从未签到

5

主题

613

帖子

138

蝴蝶豆

金牌会员

最后登录
2022-5-19
发表于 2019-10-9 08:40:15 | 显示全部楼层
你的DMA buffer adc_value 才两个,可能让ADC DMA 爆满,连while loop 都进不去。
建议:1)加大 adc_value;2)检查ADC 转换速度是否过快;3)DMA用中断方式
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

3

帖子

0

蝴蝶豆

新手上路

最后登录
2019-10-13
 楼主| 发表于 2019-10-9 10:16:16 | 显示全部楼层
mikecai 发表于 2019-10-9 08:40
你的DMA buffer adc_value 才两个,可能让ADC DMA 爆满,连while loop 都进不去。
建议:1)加大 adc_value ...

谢谢指点 同样的方法在f0和f1上试过都正常工作的
不过f334的adc时钟确实高了不少 我试一下是不是这个问题
另外单步调试的时候能进while1循环
回复 支持 反对

使用道具 举报

该用户从未签到

26

主题

565

帖子

85

蝴蝶豆

金牌会员

最后登录
2021-3-19
发表于 2019-10-9 11:47:54 | 显示全部楼层
可以尝试把HAL_ADC_Start_DMA里的“2”加大。另外,感觉你的需求用DMA完全没必要。
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

3

帖子

0

蝴蝶豆

新手上路

最后登录
2019-10-13
 楼主| 发表于 2019-10-9 17:06:57 | 显示全部楼层
电子星辰 发表于 2019-10-9 11:47
可以尝试把HAL_ADC_Start_DMA里的“2”加大。另外,感觉你的需求用DMA完全没必要。 ...

这段程序只是为了说明问题 实际上不止这么一点点内容的
回复 支持 反对

使用道具 举报

该用户从未签到

6

主题

42

帖子

7

蝴蝶豆

中级会员

最后登录
2020-11-10
发表于 2019-10-11 16:49:20 | 显示全部楼层
估计是在dma中断里出不来了
回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

18

帖子

0

蝴蝶豆

初级会员

最后登录
2021-8-26
发表于 2019-11-14 13:47:11 | 显示全部楼层
楼主怎么解决的?可不可以说下,我现在也是遇到这个问题了
回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

9

帖子

0

蝴蝶豆

初级会员

最后登录
2021-4-19
发表于 2021-3-4 17:08:07 | 显示全部楼层
你这个问题时因为CubeMX在你使用DMA时默认开启了DMA中断,关闭到DMA中断即可正常进去到主循环里面(另外补充一下,编译器的代码优化等级也会有影响,我印象中如果DMA中断打开,ADC采用软件使能转换,每当转换完就会触发DMA中断,导致程序在DMA中断里面出不来,也就进去主循环;这时如果修改keil里面的编译优化等级是可以避免这个问题,但根本问题没解决。根本原因是ADC转换触发DMA中断太频繁,这时你只需要禁止DMA中断即可)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-4-27 10:34 , Processed in 1.194476 second(s), 39 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表