ADC转换问题,EOC一直没有被置一是什么原因?

[复制链接]
3840|4
 楼主| liji1908 发表于 2013-3-5 09:16 | 显示全部楼层 |阅读模式
ADC_DR中已经有转换结果,但是EOC这个标志位始终没有被硬件置一是为什么?

下面是ADC初始化的代码:
void ADC_init(){
  ADC_InitTypeDef ADC_InitStructure;

  ADC_calibaration(ADC1);

  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;//1通道
  ADC_Init(ADC1,&ADC_InitStructure);

  adc_ch = 0;
  adc_4051_ch = 0;
  adc_states = ADC_INIT;
  ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_71Cycles5);
  ADC_Cmd(ADC1, ENABLE);
  
}

IJK 发表于 2013-3-5 11:11 | 显示全部楼层
建议用编译器(IAR、KEIL等)带的芯片的AD例子,先试试。
我用了很多STM32的AD,LZ的问题还没有碰到过。
airwill 发表于 2013-3-5 12:00 | 显示全部楼层
ADC_DR中已经有数据,                   不一定是转换后的结果
EOC这个标志位始终没有被硬件置一,              估计是没有启动过 ADC, 不妨软件触发一下试试.

评论

结贴了  发表于 2013-3-6 11:32
后面的程序如果等待EOC置一的话,此时单步调试就会阻塞。如果不开register窗口就没事。 http://hi.baidu.com/jwsmart/item/3bbe65ffc0dfcf723c198b4c可以看此博客。  发表于 2013-3-6 11:32
问题找到到了,是调试过程中的一个BUG。 大家可以试一下完成一个单次转换后,打开register观察ADC(此时JATG读了ADC_DR中的数据,EOC自动被置零)  发表于 2013-3-6 11:30
aaaxmaaa007 发表于 2013-3-5 14:39 | 显示全部楼层
同意楼上的看法
siistoo 发表于 2013-3-5 15:33 | 显示全部楼层
3楼讲的很对啊!楼主最好在init函数里加一行 ADC_SoftwareStartConvCmd(ADC1, ENABLE);
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

70

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部