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

请教 ADC_Channel_0与实际的adc用管脚PA0不一致

[复制链接]
powder-320203 提问时间:2015-10-18 20:48 /
我没有用dma,直接调用ADC1_GetVol( 1 , ADC_Channel_9),我的adc用管脚PB1,按理应该是ADC_Channel_9。实际上却在ADC_Channel_0;adc用管脚PA0,按理应该是ADC_Channel_0。实际上却在ADC_Channel_9,怎么会变了?
更郁闷的是程序修改了其它与这个调用ADC1_GetVol无关的地方,原来的adc用ADC_Channel_0,却没有跟随变化了?而adc用管脚PA0,按理应该是ADC_Channel_0。还在ADC_Channel_9。


收藏 评论14 发布时间:2015-10-18 20:48

举报

14个回答
lkl0305 回答时间:2015-10-18 20:55:46
不会吧,还有这事?
木木鱼 回答时间:2015-10-18 21:10:32
围观看看!
chifen 回答时间:2015-10-19 08:02:13
是不是你没有打开ADC管脚,
pwdzsj 回答时间:2015-10-19 10:32:12
好像是绕口令哦
yanlinwei 回答时间:2015-10-19 11:38:32
太奇怪了,没遇到过
at89 回答时间:2015-10-19 12:49:43
这种情况那就排除看看喽,是不是原理图上面连接有错或者是标错了了,或者查一下端口复用之类的,最好重新建立一个单独工程看看。芯片一般是不会有问题,估计原理图可能性比较大
你好我好大家好! 回答时间:2015-10-19 13:15:41
:):):):):):):):)
powder-320203 回答时间:2015-10-19 16:35:05
管脚肯定没有错  初始化如下:
        /* Enable  GPIOA clock */
          RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
  /* ADC1 Periph clock enable */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
  /* DMA1 clock enable */
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1 , DISABLE);

  /* Configure PA.01  as analog input */
  GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;// ;
  GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AN;
        GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL ;
  GPIO_Init(GPIOA, &GPIO_InitStruct);                               
powder-320203 回答时间:2015-10-19 16:50:01
直接调用ADC1_GetVol( 1 , ADC_Channel_9),我的adc用管脚PB1,按理应该是ADC_Channel_9。实际上却在ADC_Channel_0;adc用管脚PA0,按理应该是ADC_Channel_0。实际上却在ADC_Channel_9,怎么会变了?但是还是能够用,一直没有管它,将错就错。可以现在启动了时钟TIM3和加了一些与adc无关的程序。ADC1_GetVol( 1 , ADC_Channel_0)就没有了?
   以前用过很多stm32f103\stm32f107,都没有这个问题。
powder-320203 回答时间:2015-10-23 21:41:14
单独只使用一个channel,是正确的,可是用了3个channel,切换后就是不对。
  ADCx->CHSELR = (uint32_t)ADC_Channel;        //

不向stm32f103\107
        ADC1->SQR3|=ch;                  //这个是正确的,很容易
请教大侠指点。                            
powder-320203 回答时间:2015-10-23 21:52:48
at89 发表于 2015-10-19 12:49
这种情况那就排除看看喽,是不是原理图上面连接有错或者是标错了了,或者查一下端口复用之类的,最好重新建 ...

单独用一个channel adc是正确的,用3个,作channel切换就不对了?请指点:
  /* Convert the selected Channel Vref  with 55.5 Cycles as sampling time */
  ADC_ChannelConfig(ADC1, ADC_Channel, ADC_SampleTime_239_5Cycles);
//  ADC_ChannelConfig(ADC1, ADC_Channel_0  , ADC_SampleTime_55_5Cycles);
//  cda_value=2;
  /* ADC Calibration */
  ADC_GetCalibrationFactor(ADC1);
//   ADC_DMACmd(ADC1, DISABLE);
  /* Enable ADC1 */
//  ADC_Cmd(ADC1, ENABLE);     
  
  /* Wait the ADCEN falg */
  while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_ADEN));
  /* ADC1 regular Software Start Conv */
  ADC_StartOfConversion(ADC1);
        if(cda_value==1) RegularConvData_Tab1 = ADC_GetConversionValue(ADC1);
        else if(cda_value==2) RegularConvData_Tab2 = ADC_GetConversionValue(ADC1);
        else if(cda_value==3) RegularConvData_Tab3 = ADC_GetConversionValue(ADC1);
powder-320203 回答时间:2015-10-23 21:59:30
  ADC_ChannelConfig(ADC1, ADC_Channel, ADC_SampleTime_239_5Cycles);
  /* ADC Calibration */
  ADC_GetCalibrationFactor(ADC1);
  
  /* Wait the ADCEN falg */
  while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_ADEN));
  /* ADC1 regular Software Start Conv */
  ADC_StartOfConversion(ADC1);
        if(ADC_Channel==ADC_Channel_0) RegularConvData_Tab1 = ADC_GetConversionValue(ADC1);
        else if(ADC_Channel==ADC_Channel_1) RegularConvData_Tab2 = ADC_GetConversionValue(ADC1);
        else if(ADC_Channel==ADC_Channel_9) RegularConvData_Tab3 = ADC_GetConversionValue(ADC1);
powder-320203 回答时间:2015-10-23 22:02:08
  ADC_ChannelConfig(ADC1, ADC_Channel, ADC_SampleTime_239_5Cycles);
  /* ADC Calibration */
  ADC_GetCalibrationFactor(ADC1);
  
  /* Wait the ADCEN falg */
  while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_ADEN));
  /* ADC1 regular Software Start Conv */
  ADC_StartOfConversion(ADC1);
        if(ADC_Channel==ADC_Channel_0) RegularConvData_Tab1 = ADC_GetConversionValue(ADC1);
        else if(ADC_Channel==ADC_Channel_1) RegularConvData_Tab2 = ADC_GetConversionValue(ADC1);
        else if(ADC_Channel==ADC_Channel_9) RegularConvData_Tab3 = ADC_GetConversionValue(ADC1);
peter001 回答时间:2015-10-23 23:51:05
是不是程序跑飞了

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版