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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HK32F030MF4P6是一款STM32系列的微控制器,您可以按照以下步骤来使用它: 1. 硬件连接:将HK32F030MF4P6与其他外围设备(例如传感器、显示屏等)进行连接。请参考HK32F030MF4P6的硬件手册或者开发板的原理图来了解正确的连接方式。 2. 开发环境搭建:安装ST公司提供的开发环境,例如STM32CubeIDE或者Keil MDK。这些开发环境可以帮助您编写、编译和调试代码。 3. 编写代码:使用C语言或者汇编语言编写代码来控制HK32F030MF4P6的功能。您可以使用ST提供的库函数来简化开发过程,例如GPIO库、UART库等。 4. 编译和烧录:使用开发环境将代码编译成可执行文件,并将该文件烧录到HK32F030MF4P6的闪存中。确保使用正确的编译选项和连接器脚本。 5. 调试和测试:使用开发环境提供的调试工具,例如调试器和仿真器,来调试和测试您的代码。您可以设置断点、单步执行代码,并观察变量的值来检查代码的正确性。 6. 部署和运行:将烧录好的代码通过USB或者其他接口连接到目标设备上,并进行测试和运行。确保您的代码可以正确地控制外围设备,并满足您的需求。 请注意,以上是一个基本的使用流程,具体的步骤和细节可能会因您的具体需求和应用场景而有所不同。建议您参考HK32F030MF4P6的技术文档和示例代码,以及ST的官方支持论坛,获取更多的帮助和资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值