完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好,
最近我正在尝试使用 ADC 来采样 4 通道电流信号。由于没有关键时间要求,我打算使用扫描模式。在我看来,ADC 会自动完成四通道信号转换的东西,然后设置 EOS 标志,这会导致中断。之后,我可以在中断服务程序中读取所有四个通道的转换结果。 但是当我完成设计,然后尝试调试时,我发现,EOS中断永远不会进入。然后我试了很多方法,最后发现,如果我在开始ADC转换后的某个时间读取DR,那么就可以进入中断了!此外,我发现,如果我永远轮询它,我什至无法获得 EOS 标志! 我怀疑,这可能是 STM32H743 芯片逻辑问题,因为,我对 STM32F4 系列的 ADC 采样使用了类似的方法。 |
|
相关推荐
1个回答
|
|
,我想我已经找到了根本原因。
uhADCxConvertedValue[0] = HAL_ADC_GetValue(&hadc1); uhADCxConvertedValue[1] = HAL_ADC_GetValue(&hadc1); uhADCxConvertedValue[2] = HAL_ADC_GetValue(&hadc1); while(0 == __HAL_ADC_GET_FLAG(&hadc1, ADC_FLAG_EOS)); uhADCxConvertedValue[3] = HAL_ADC_GetValue(&hadc1); 像 upside 这样的代码可以正常工作。请注意,我尝试在读取 ADC_DR 三次后轮询 EOS 标志。如果我把轮询语句放在前面,就会发生死循环。 而测试代码似乎也支持我的假设:EOS与EOC的边缘有很深的关联。其实我也试过3次清除EOC标志,之后也能拿到EOS标志,但是这种情况下FIFO里的数据好像也被清除了,以为没读到ADC_DR。 |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2644 浏览 1 评论
3209 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1784 浏览 1 评论
3613 浏览 6 评论
5990 浏览 21 评论
940浏览 4评论
1317浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
585浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1304浏览 3评论
1362浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 23:07 , Processed in 1.227150 second(s), Total 49, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号