完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
大致的代码就是上面,采用ADC1,PA0通道5,PC2通道3;PA0口直接接3.3V,PC2口直接接地。
问题: 使用上面的代码,转出来的两个通道的电压值都是0.4~0.45V,理论上应该分别采集到的是3.3V和0V的,不知道为什么?是不是我哪里配置不对啊,求大神帮忙~ |
|
相关推荐
17个回答
|
|
|
楼主设置DMA中断,中断返回函数却是ADC中断,
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) 如何读到正确的数据? |
|
|
|
|
|
我也是刚学没多久,而且是参考别人的例子来写的这个callback,请问具体我要怎么操作呢
|
|
|
|
|
|
本帖最后由 wenyangzeng 于 2018-3-16 10:33 编辑
DMA中断调用应该是: void DMA1_Channel1_IRQHandler(void) {} 但是你在DMA中断中并没有读取数据。 ST官方例程很多,可以参考: |
|
|
|
|
|
转换的值不用在中断读取吧,因为DMA的转换返回值是在HAL_ADC_Start_DMA(&hadc1, (uint32_t*)&uhADCxConvertedValue,2);中的uhADCxConvertedValue就转好了,而且是循环连续转换的,我们只要在while(1)中不断获取转换即可吧。
另外,你附件的demo好像我没看出我的错在哪 |
|
|
|
|
|
我建议你看看我们的例程:
RepositorySTM32Cube_FW_L4_V1.10.0ProjectsSTM32L476G_EVALExamplesADCADC_DMA_Transfer 然后__weak void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)这个是个虚函数,你不能在main在次声明,直接实现就好了.只是规范一下,你能进去代表不影响. 我建议你一个个channel单独试一下,但后看看你硬件的参考电压是多少等等.. |
|
|
|
|
|
|
|
|
|
|
|
我在while(1)里面又开启HAL_ADC_Start_DMA了,应该可以的吧?
|
|
|
|
|
|
DMA重新启动好像还要初始化ADC和DMA
|
|
|
|
|
|
重新初始化与否都可以,刚试了,目前这个问题很纠结。参考例程也看了,还是不知道哪里出了问题
|
|
|
|
|
|
file:///C:/Users/Administrator/Desktop/QQ%E5%9B%BE%E7%89%8720180315215136.png
采用ADC1,PA0通道5,PC2通道3;PA0口直接接3.3V,PC2口直接接地。MCU是stm32l476RC 转出来的电压值都是0.4~0.45V,理论上应该分别采集到的是3.3V和0V的,不知道为什么? |
|
|
|
|
|
其实你需要处理的数据量不多,建议不使用DMA,直接ADC中断取数据应该能成功
|
|
|
|
|
|
不是了,现在只是简单的转换,后面项目要大数据量转换的
|
|
|
|
|
|
先去掉DMA,调试到ADC正常后再增加DMA,总是比较容易找到问题。
|
|
|
|
|
|
DMA配置成连续循环模式,开启后,直接从你定义的数组中取数据,别的不用管
|
|
|
|
|
|
关于中断我也很迷茫,找找教程
|
|
|
|
|
|
顶一下
|
|
|
|
|
|
楼主问题解决了吗?
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
2797 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
2403 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2276 浏览 0 评论
2388 浏览 1 评论
1637 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 19:50 , Processed in 1.060554 second(s), Total 106, Slave 89 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
559