求看看stm8l ADC的程序问题

2019-07-14 19:09发布

void  ADC_init()
{
        CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);
        CLK_PeripheralClockConfig(CLK_Peripheral_ADC1, ENABLE);
        ADC_DeInit(ADC1);
        delayms(100);
        GPIO_Init(GPIOB,GPIO_Pin_7,GPIO_Mode_Out_PP_Low_Fast);       
        ADC_Init(ADC1,ADC_ConversionMode_Single,ADC_Resolution_12Bit,ADC_Prescaler_2);
        ADC_SamplingTimeConfig(ADC1,ADC_Group_SlowChannels,ADC_SamplingTime_384Cycles);
        ADC_Cmd(ADC1,ENABLE);
        ADC_ChannelCmd(ADC1,ADC_Channel_11 ,ENABLE);
       
}

uint16_t ADC_getval()
{
        uint16_t ADCdata,i;
       // for(i=0;i<100;i++);
        ADC_SoftwareStartConv (ADC1);//开启软件转换

        while(!ADC_GetFlagStatus (ADC1,ADC_FLAG_EOC));                                                        //等待转换结束
        ADC_ClearFlag (ADC1,ADC_FLAG_EOC);                                                                                //清除对应标志

        ADCdata=ADC_GetConversionValue( ADC1);
        return ADCdata;
}
void USART_Init_USR()
{
        CLK_PeripheralClockConfig(CLK_Peripheral_USART2,ENABLE);
        GPIO_ExternalPullUpConfig(GPIOE,  GPIO_Pin_3,  ENABLE);
        GPIO_ExternalPullUpConfig(GPIOE,  GPIO_Pin_4,  ENABLE);
        USART_Init( USART2, 9600, USART_WordLength_8b,  USART_StopBits_1,
                    USART_Parity_No,  USART_Mode_Tx);
        USART_Cmd( USART2, ENABLE);
}
void main()

        uint16_t A;
        ADC_init();
        USART_Init_USR();
        while(1)
        {
             A=ADC_getval();
            USART_SENDL(A);
            USART_Send_Demo(Speed[i]);

        }
}



串口接收的值一直再跳,不给adc11通道给电压也一直在跳

0条回答

一周热门 更多>