无帝老三 发表于 2015-9-1 14:26:16

stm32f030的AD转换,序列通道单次转换

void adcinit(void)
{
        GPIO_InitTypeDef GPIO_InitStruct;
        ADC_InitTypeDef ADC_InitStruct;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE);

        GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5;       
        GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AN;
        GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
        GPIO_Init(GPIOA,&GPIO_InitStruct);

        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_Upward;
        ADC_Init(ADC1,&ADC_InitStruct);

        ADC_ChannelConfig(ADC1,ADC_Channel_0,ADC_SampleTime_55_5Cycles);       
        ADC_ChannelConfig(ADC1,ADC_Channel_1,ADC_SampleTime_55_5Cycles);
        ADC_ChannelConfig(ADC1,ADC_Channel_2,ADC_SampleTime_55_5Cycles);

        ADC_GetCalibrationFactor(ADC1);

        ADC_Cmd(ADC1,ENABLE);

}

/**************************************************************
*Function Name         :   getadcvalue
*Param               :   void
*Return Param          :   void
*Description         :   获取adc转换结果
***************************************************************/
void getadcvalue(void)
{
    UINT32 idx;
        while(ADC_GetFlagStatus(ADC1,ADC_FLAG_ADRDY) == DISABLE);
        ADC_StartOfConversion(ADC1);
        for(idx = 0;idx < 3;idx++)
        {
      // while(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC) == DISABLE);
           ADC1ConvValue = ADC_GetConversionValue(ADC1);
        }
        if(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOSEQ) == ENABLE)
        {
       ADC_ClearFlag(ADC1,ADC_FLAG_EOSEQ);
        }

}

用上面的代码可以实现序列通道单次转换吗?
目的:调用一次getadcvalue()就采集一次数据
求大神指点,while(EOC)不注释掉的话,好像只能调用一次,手册上写,EOC不是读取数据后才会清零吗?



页: [1]
查看完整版本: stm32f030的AD转换,序列通道单次转换