打印

晕了,香主帮帮忙啊

[复制链接]
1449|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
古道122|  楼主 | 2008-8-14 19:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
AD, ADC, dc, ADC1, ST
我想对三路数据进行AD转换,不用同时的,但是这样写的为什么转换的老是设定的第一个Channel的数据呢?数组abc里总是保存的第一个channel的数据
 /* ADC1 configuration ------------------------------------------------------*/
  
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;//
  
ADC_InitStructure.ADC_ScanConvMode = DISABLE;//
  
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;//

ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//

ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//

ADC_InitStructure.ADC_NbrOfChannel = 3;//

ADC_Init(ADC1, &ADC_InitStructure);

 
/* ADC1 regular channel10 configuration */

ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1, ADC_SampleTime_55Cycles5);
  
ADC_RegularChannelConfig(ADC1, ADC_Channel_16, 2, ADC_SampleTime_55Cycles5);
  
ADC_RegularChannelConfig(ADC1, ADC_Channel_17, 3, ADC_SampleTime_55Cycles5);
 
 /* Enable ADC1 */
  
ADC_Cmd(ADC1, ENABLE);//

 /* Enable ADC1 reset calibaration register */
 
ADC_ResetCalibration(ADC1);
 
/* Check the end of ADC1 reset calibration register *//

  
while(ADC_GetResetCalibrationStatus(ADC1));

 /* Start ADC1 calibaration */
 
ADC_StartCalibration(ADC1);
  
/* Check the end of ADC1 calibration */
 
while(ADC_GetCalibrationStatus(ADC1));
  
/* Start ADC1 Software Conversion *//
  
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
  
#if 1
    
while(1)
  
{
    
while(!(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC)));
    
value = (ADC1->DR);
   
 abc[own] = value;
   
 own++;
   
 if(own == 3)
   
 {
     
 ADC_Cmd(ADC1,DISABLE);
   
 }
沙发
古道122|  楼主 | 2008-8-14 20:32 | 只看该作者

看了一下

0x40012400地址的数据总是0x00000012,即开启转换,并且标志EOC在读取AD值之后也并没有变成0。就算是手动设置也没有效果。- -!

使用特权

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

本版积分规则

84

主题

381

帖子

1

粉丝