1
完善资料让更多小伙伴认识你,还能领取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的选项
2730 浏览 1 评论
3239 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1808 浏览 1 评论
3647 浏览 6 评论
6035 浏览 21 评论
1337浏览 4评论
197浏览 3评论
对H747I-DISCO写程序时将CN2的st-link复用为usart1,再次烧录时无法检测到stlink怎么解决?
350浏览 2评论
STM32G474RE芯片只是串口发个数据就发烫严重是怎么回事?
442浏览 2评论
STM32处理增量式编码器Z信号如何判断中断是正转的还是反向转的?
273浏览 2评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 22:32 , Processed in 0.833494 second(s), Total 46, Slave 40 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号