完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用STM32F401RET6芯片,sysem tick产生5ms中断,主程序查询5ms是否有到,到了就做启动一次ad转换(查询方式),下一个5ms去判断转换是否结束(实际转换不需要这么长时间),如果转换结束就读取转换值。再下一个5ms来又启动转换,如此循环。但是现在现象是,进入调试后,可以正常转换几次,转换值也是正确的,紧接着就是不能查询到转换结束标志EOC,但STRT一直为1. 如果改变写法,启动adc后,立即等待adc做完,这样写就正常。
u16 Get_Adc(void) { ADC_RegularChannelConfig(ADC1, ADC_Channel_4, 1, ADC_SampleTime_480Cycles ); ADC_SoftwareStartConv(ADC1); while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC )); return ADC_GetConversionValue(ADC1); } void adc_scan(void) //@5ms { #if 1 // 这样写就正常 res = Get_Adc(); cnt++; return; #else // 这样写就开始正常转换,几次后EOC标志就不会被置位。 if(index == 0) { ADC_RegularChannelConfig(ADC1, ADC_Channel_4, 1, ADC_SampleTime_480Cycles ); ADC_SoftwareStartConv(ADC1); index = 1; } else { if(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ) == SET) { ADC1->SR = ~(uint32_t)ADC_SR_EOC; cnt++; res = (uint16_t)ADC1->DR; index = 0; } } #endif } 哪位有遇到过这种情况吗?为什么不立即去等ADC做完就有问题,还是adc就有这种限制? |
|
相关推荐
1个回答
|
|
楼主建议看一下ADC的采样频率,ADC采集我不建议在定时中做,可以再外部判断ticks的值进行判断是否需要采样。
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1621 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1546 浏览 1 评论
980 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
686 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1599 浏览 2 评论
1867浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
650浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
518浏览 3评论
536浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
506浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 05:12 , Processed in 0.790417 second(s), Total 50, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号