初级会员

- 积分
- 109
- 金钱
- 109
- 注册时间
- 2019-12-13
- 在线时间
- 67 小时
|
1金钱
如题,具体问题是ADC1的第六通道结果和第七通道结果互换了。下面是代码。
void ADC1_DMA_Init(void) //ADC配置
{
ADC_InitTypeDef ADC_InitStruct;
GPIO_InitTypeDef GPIO_InitStruct;
/* Enable GPIOA clock */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
/* ADC1 Periph clock enable */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
/* Configure PA.01 as analog input */
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AN;
GPIO_Init(GPIOA, &GPIO_InitStruct); //
/* ADC1 DeInit */
ADC_DeInit(ADC1);
ADC_StructInit(&ADC_InitStruct);
/* Configure the ADC1 in continous mode withe a resolutuion equal to 12 bits */
ADC_InitStruct.ADC_Resolution = ADC_Resolution_12b;
ADC_InitStruct.ADC_ContinuousConvMode = DISABLE;
ADC_InitStruct.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
ADC_InitStruct.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStruct.ADC_ScanDirection = ADC_ScanDirection_Backward;
ADC_Init(ADC1, &ADC_InitStruct);
/* Convert the ADC1 temperature sensor with 55.5 Cycles as sampling time */
ADC_ChannelConfig(ADC1, ADC_Channel_6, ADC_SampleTime_55_5Cycles);
// ADC_TempSensorCmd(ENABLE);
/* Convert the ADC1 Vref with 55.5 Cycles as sampling time */
// ADC_ChannelConfig(ADC1, ADC_Channel_Vrefint, ADC_SampleTime_55_5Cycles);
// ADC_VrefintCmd(ENABLE);
/* ADC Calibration */
ADC_GetCalibrationFactor(ADC1);
/* 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);
}
u16 adcx_get(u8 x) //获取ADC结果
{
switch (x)
{
case 4:
ADC_ChannelConfig(ADC1, ADC_Channel_4, ADC_SampleTime_55_5Cycles);
while (ADC_GetFlagStatus(ADC1, ADC_FLAG_ADRDY) == RESET);
ADC_StartOfConversion(ADC1);
while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)==RESET);
return ADC_GetConversionValue(ADC1);
break;
case 5:
ADC_ChannelConfig(ADC1, ADC_Channel_5, ADC_SampleTime_55_5Cycles);
while (ADC_GetFlagStatus(ADC1, ADC_FLAG_ADRDY) == RESET);
ADC_StartOfConversion(ADC1);
while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)==RESET);
return ADC_GetConversionValue(ADC1);
break;
case 6:
ADC_ChannelConfig(ADC1, ADC_Channel_6, ADC_SampleTime_55_5Cycles);
while (ADC_GetFlagStatus(ADC1, ADC_FLAG_ADRDY) == RESET);
ADC_StartOfConversion(ADC1);
while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)==RESET);
return ADC_GetConversionValue(ADC1);
break;
case 7:
ADC_ChannelConfig(ADC1, ADC_Channel_7, ADC_SampleTime_55_5Cycles);
while (ADC_GetFlagStatus(ADC1, ADC_FLAG_ADRDY) == RESET);
ADC_StartOfConversion(ADC1);
while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)==RESET);
return ADC_GetConversionValue(ADC1);
break;
}
}
//主函数
int main(void)
{
#ifdef APP
iRemapIrqVector();
#endif
GSM_CON=CONNECT ;
RCC_INIt();
ADC1_DMA_Init();
delay_init();
LED_init();
RTC_Initializes();
USART1_Init(115200);
TIM2_Config();
IWDG_Config();
memset(server_add1,0,30);
memset(com1,0,6);
memset(server_add2,0,30);
memset(com1,0,6);
Flash_Read(FLASH_canshu,(u8*)server_add1,30);
Flash_Read(FLASH_canshu+30,(u8*)com1,6);
Flash_Read(FLASH_canshu+40,(u8*)server_add2,30);
Flash_Read(FLASH_canshu+80,(u8*)com2,6);
// g4org2();
// if(server_add1[0]!=0&&server_add1[0]!=0xff)
// AT_RST();
// else
// {
// strcpy((char*)server_add1,"dtu.zsbike.com.cn");
// strcpy((char*)com1,"8483");
// AT_RST();
// }
cuu=0;
while (1)
{
ADC_TVOC=adcx_get(7)*3300/0xfff;
led2_on();
led3_on();
delay_ms(200);
ADC_MQ9=adcx_get(6)*3300/0xfff;
// ADC_val4=adcx_get(4);
// delay_ms(20);
// ADC_val5=adcx_get(5);
led2_off();
led3_off();
delay_ms(200);
}
}
|
|