野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9797|回复: 2

为何我的ADC2只能使用PC0-PC5(通道10-15)

[复制链接]
发表于 2017-10-22 00:48:07 | 显示全部楼层 |阅读模式
单独使用了ADC2(ADC1原因不明坏掉了)但是发现只能使用通道10-15,也就是GPIOC所对应的通道,GPIOA的不可以(A已经使能),求大神帮助。。

  1. <div> #include "adc.h"
  2. #include "delay.h"

  3. void  Adc_Init(void)
  4. {        
  5.         ADC_InitTypeDef ADC_InitStructure;
  6.         GPIO_InitTypeDef GPIO_InitStructure;

  7.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC|RCC_APB2Periph_ADC2,ENABLE);

  8.         RCC_ADCCLKConfig(RCC_PCLK2_Div6);

  9.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;
  10.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
  11.         GPIO_Init(GPIOC, &GPIO_InitStructure);       

  12.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;
  13.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
  14.         GPIO_Init(GPIOA, &GPIO_InitStructure);       

  15.         ADC_DeInit(ADC2);

  16.         ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
  17.         ADC_InitStructure.ADC_ScanConvMode = ENABLE;
  18.         ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
  19.         ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
  20.         ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
  21.         ADC_InitStructure.ADC_NbrOfChannel = 1;
  22.         ADC_Init(ADC2, &ADC_InitStructure);

  23.   
  24.         ADC_Cmd(ADC2, ENABLE);
  25.        
  26.         ADC_ResetCalibration(ADC2);
  27.          
  28.         while(ADC_GetResetCalibrationStatus(ADC2));
  29.        
  30.         ADC_StartCalibration(ADC2);

  31.         while(ADC_GetCalibrationStatus(ADC2));

  32. //        ADC_SoftwareStartConvCmd(ADC2, ENABLE);

  33. }                                  
  34. </div><div>
  35. </div><div>
  36. u16 Get_Adc(u8 ch)   
  37. {
  38.         ADC_RegularChannelConfig(ADC2, ch, 1, ADC_SampleTime_239Cycles5 );       
  39.         ADC_SoftwareStartConvCmd(ADC2, ENABLE);
  40.         while(!ADC_GetFlagStatus(ADC2, ADC_FLAG_EOC ));
  41.         return ADC_GetConversionValue(ADC2);
  42. }

  43. u16 Get_Adc_Average(u8 ch,u8 times)
  44. {
  45.         u32 temp_val=0;
  46.         u8 t;
  47.         for(t=0;t<times;t++)
  48.         {
  49.                 temp_val+=Get_Adc(ch);
  50.                 delay_ms(5);
  51.         }
  52.         return temp_val/times;
  53. }          </div>
复制代码

回复

使用道具 举报

 楼主| 发表于 2017-10-22 00:49:58 | 显示全部楼层
  1.         redeye1 = Get_Adc_Average(ADC_Channel_10,4);
  2.         redeye2 = Get_Adc_Average(ADC_Channel_11,4);
  3.         redeye3 = Get_Adc_Average(ADC_Channel_12,4);
  4.         redeye4 = Get_Adc_Average(ADC_Channel_13,4);
  5.         redeye5 = Get_Adc_Average(ADC_Channel_14,4);
  6.         redeye6 = Get_Adc_Average(ADC_Channel_15,4);
  7.         redeye7 = Get_Adc_Average(ADC_Channel_0,4); 没法用
  8.         redeye8 = Get_Adc_Average(ADC_Channel_1,4);没法用
复制代码
回复 支持 反对

使用道具 举报

发表于 2017-10-23 09:45:52 | 显示全部楼层
是不是板子其它芯片已经占用它了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-11 02:17 , Processed in 0.029871 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表