新手上路
- 积分
- 34
- 金钱
- 34
- 注册时间
- 2016-5-20
- 在线时间
- 5 小时
|
#include "adc.h"
#include "delay.h"
void Adc_Init(void)
{
ADC_InitTypeDef ADC_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1 , ENABLE ); //ê1ÄüADC1í¨μàê±Öó
RCC_ADCCLKConfig(RCC_PCLK2_Div6); //éèÖÃADC·ÖÆμòò×ó6 72M/6=12,ADC×î′óê±¼ä2»Äü3¬1y14M
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOB, &GPIO_InitStructure);
ADC_DeInit(ADC1);
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel = 8;
ADC_Init(ADC1, &ADC_InitStructure);
ADC_Cmd(ADC1, ENABLE);
ADC_ResetCalibration(ADC1);
while(ADC_GetResetCalibrationStatus(ADC1));
ADC_StartCalibration(ADC1);
while(ADC_GetCalibrationStatus(ADC1));
}
u16 Get_Adc(u8 ch)
{
switch(ch)
{
case 0:
ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_239Cycles5 );
break;
case 1:
ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 2, ADC_SampleTime_239Cycles5 );
break;
case 2:
ADC_RegularChannelConfig(ADC1, ADC_Channel_2, 3, ADC_SampleTime_239Cycles5 );
break;
case 3:
ADC_RegularChannelConfig(ADC1, ADC_Channel_3, 4, ADC_SampleTime_239Cycles5 );
break;
case 4:
ADC_RegularChannelConfig(ADC1, ADC_Channel_4, 5, ADC_SampleTime_239Cycles5 );
break;
case 5:
ADC_RegularChannelConfig(ADC1, ADC_Channel_5, 6, ADC_SampleTime_239Cycles5 );
break;
case 6:
ADC_RegularChannelConfig(ADC1, ADC_Channel_6, 7, ADC_SampleTime_239Cycles5 );
break;
case 7:
ADC_RegularChannelConfig(ADC1, ADC_Channel_8, 8, ADC_SampleTime_239Cycles5 );
default:break;
}
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));
return ADC_GetConversionValue(ADC1);
}
int main(void)
{
u16 adcx[8],n;
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
uart_init(9600);
LED_Init();
Adc_Init();
while(1)
{
LED0=!LED0;
adcx[0]=Get_Adc(0)*330/4096 ;
delay_ms(250);
printf("value[%d]:\t%d\r\n",0,adcx[0]);
adcx[1]=Get_Adc(1)*330/4096 ;
delay_ms(250);
printf("value[%d]:\t%d\r\n",0,adcx[1]);
adcx[2]=Get_Adc(2)*330/4096 ;
delay_ms(250);
printf("value[%d]:\t%d\r\n",1,adcx[2]);
adcx[3]=Get_Adc(3)*330/4096;
delay_ms(250);
printf("value[%d]:\t%d\r\n",3,adcx[3]);
adcx[4]=Get_Adc(4);
delay_ms(250);
printf("value[%d]:\t%d\r\n",4,adcx[4]);
adcx[5]=Get_Adc(5);
delay_ms(250);
printf("value[%d]:\t%d\r\n",5,adcx[5]);
adcx[6]=Get_Adc(6);
delay_ms(250);
printf("value[%d]:\t%d\r\n",6,adcx[6]);
adcx[7]=Get_Adc(7);
delay_ms(250);
printf("value[%d]:\t%d\r\n",7,adcx[7]);
/**/
printf("\r\n");
for(n=0;n<=8;n++){printf("value[%d]:\t%d\r\n",n,adcx[n]);}
printf("\r\n");
}
只有第一通道是对的,其他通道结果与通道0相似,这是什么原因??、
|
|