打印

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

[复制链接]
3309|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, 不妨软件触发一下试试.

使用特权

评论回复
评论
liji1908 2013-3-6 11:32 回复TA
结贴了 
liji1908 2013-3-6 11:32 回复TA
后面的程序如果等待EOC置一的话,此时单步调试就会阻塞。如果不开register窗口就没事。 http://hi.baidu.com/jwsmart/item/3bbe65ffc0dfcf723c198b4c可以看此博客。 
liji1908 2013-3-6 11:30 回复TA
问题找到到了,是调试过程中的一个BUG。 大家可以试一下完成一个单次转换后,打开register观察ADC(此时JATG读了ADC_DR中的数据,EOC自动被置零) 
地板
aaaxmaaa007| | 2013-3-5 14:39 | 只看该作者
同意楼上的看法

使用特权

评论回复
5
siistoo| | 2013-3-5 15:33 | 只看该作者
3楼讲的很对啊!楼主最好在init函数里加一行 ADC_SoftwareStartConvCmd(ADC1, ENABLE);

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

70

帖子

0

粉丝