你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

为啥while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)==RESET)死循环?

[复制链接]
苏柚 提问时间:2015-7-13 10:11 /
FAQ上网友求助的问题,大家帮忙回答下。
https://www.stmcu.org.cn/faq/index/detail/id-70579


本人一开始采用的是STM32F103RC,ADC正常。后来移植到STM32F103RB上,为啥while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)==RESET)总是死循环。
初始化代码:
RCC_APB2PeriphClockCmd(        RCC_APB2Periph_ADC1, ENABLE);
RCC_ADCCLKConfig(RCC_PCLK2_Div6);
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel = 1;
ADC_Init(ADC1, &ADC_InitStructure);        
ADC_Cmd(ADC1, ENABLE);
ADC_ResetCalibration(ADC1);
while(ADC_GetResetCalibrationStatus(ADC1));        
ADC_StartCalibration(ADC1);
while(ADC_GetCalibrationStatus(ADC1));        


定时器中断函数中调用:
ADC_RegularChannelConfig(ADC1, ADC_Channel_8, 1, ADC_SampleTime_239Cycles5 );
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)==RESET);
//等待转换结束,此处死循环 adc_a= ADC_GetConversionValue(ADC1);




收藏 评论3 发布时间:2015-7-13 10:11

举报

3个回答
moyanming2013 回答时间:2015-7-13 11:45:50
感觉ADC1没有设置正确
xiazhifei1984 回答时间:2015-7-14 07:19:44
我在另外一个论坛上发了帖子,包含了整个工程,供参考:http://www.openedv.com/posts/list/55363.htm,疑问还是没有解决,期待中!
kernaly 回答时间:2015-7-14 18:07:40
看下官方例程相关的吧

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版