• HK32F030MF4P6 3路ADC采集


     应用场景

    void ALR_ADC_Init(void)
    {
        GPIO_InitTypeDef GPIO_InitStructure;
        ADC_InitTypeDef ADC_InitStructure;
        
        // 使能片外设时钟
        RCC_AHBPeriphClockCmd( RCC_AHBPeriph_GPIOC | RCC_AHBPeriph_GPIOD, ENABLE );
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC ,ENABLE);
        
        // PC.04 --> ADC_Channel_2
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
        GPIO_Init(GPIOC, &GPIO_InitStructure);
        GPIO_PinAFConfig(GPIOC,GPIO_PinSource4,GPIO_AF_7);
        
        // PD.03 --> ADC_Channel_3
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
        GPIO_Init(GPIOD, &GPIO_InitStructure);
        GPIO_PinAFConfig(GPIOD,GPIO_PinSource3,GPIO_AF_7);
        
        // PD.02 --> ADC_Channel_4
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
        GPIO_Init(GPIOD, &GPIO_InitStructure);
        GPIO_PinAFConfig(GPIOD,GPIO_PinSource2,GPIO_AF_7);
        
        /*ADC配置*/
        ADC_DeInit(ADC1);
        ADC_StructInit(&ADC_InitStructure);
        
        ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
        ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConvEdge_None;
        ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
        ADC_InitStructure.ADC_ScanDirection = ADC_ScanDirection_Upward;
        ADC_Init(ADC1,&ADC_InitStructure);
        
        /* ADC1 regular channels configuration */ 
        //ADC_ChannelConfig(ADC1, ADC_Channel_1 , ADC_SampleTime_239_5Cycles);
        //ADC_ChannelConfig(ADC1, ADC_Channel_2 , ADC_SampleTime_239_5Cycles);
        //ADC_ChannelConfig(ADC1, ADC_Channel_3 , ADC_SampleTime_239_5Cycles);
        //ADC_ChannelConfig(ADC1, ADC_Channel_4 , ADC_SampleTime_239_5Cycles);
        
        ADC_GetCalibrationFactor(ADC1);
        
        /* Enable ADC1 */
        ADC_Cmd(ADC1, ENABLE);
        
        while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_ADRDY)); 
    //    ADC_StartOfConversion(ADC1);
    }

    u16 Get_Adc(u8 ch) //ch为通道
    {
        ADC_StopOfConversion(ADC1);
        
         /* Configure the ADC Channel */
        ADC1->CHSELR = 0x0;
        
        ADC_ChannelConfig(ADC1, ch , ADC_SampleTime_239_5Cycles);

        ADC_StartOfConversion(ADC1);

        while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET);
        return ADC_GetConversionValue(ADC1);
    }

  • 相关阅读:
    【自然语言处理】【检索】GENER:自回归实体检索
    CSDN文章复制没有图片只有文字
    DatasetDM: Synthesizing Data with Perception Annotations Using Diffusion Models
    PDF文件去除文字水印
    【C语言】空指针&野指针学习小结
    2022.11.8 固体物理
    RT-Thread中常用的指令
    【android】View的事件体系3-弹性滑动
    信息系统项目管理师必背核心考点(三十二)质量管理八项原则
    SIP终端注册后无法收到呼入请求的情况说明
  • 原文地址:https://blog.csdn.net/enfang1120/article/details/126174872