• 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);
    }

  • 相关阅读:
    一统江湖:毫米波雷达开发手册之大话线谱估计
    企业如何利用微博来投放广告呢?
    证券期货业数据安全管理 与保护指引 附下载地址
    java计算机毕业设计政务大厅管理系统源码+数据库+系统+lw文档+mybatis+运行部署
    新闻发稿多少钱一篇?轻松发布新闻一站式发稿服务平台
    ​力扣解法汇总934. 最短的桥
    构建高效沟通桥梁 —— 测试团队中的快速反馈机制建设
    Kotlin语法入门-数据类、伴生类、枚举类(9)
    Java Collection接口中的常用方法总结
    Springboot毕设项目公益众筹管理系统h7sur(java+VUE+Mybatis+Maven+Mysql)
  • 原文地址:https://blog.csdn.net/enfang1120/article/details/126174872