[技术文章] 国民技术N32G031使用经验2_ADC采集

[复制链接]
查看888 | 回复6 | 2022-10-13 11:53:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
国民技术N32G031使用经验2_ADC采集:
    国民技术ARM系列芯片性价比高,使用方便,唯独官方例子太少,因此在这贴出常用部分代码,供初用者参考改进:
void ADC_Initial(void)
{
      ADC_InitType ADC_InitStructure;
      GPIO_InitType GPIO_InitStructure;
   
      ADC_DeInit(ADC);
   
      //RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOA, ENABLE);
    //RCC_EnableAHBPeriphClk(RCC_AHB_PERIPH_ADC, ENABLE); /* Enable ADC clocks */
   
      RCC_ConfigAdc1mClk(RCC_ADC1MCLK_SRC_HSI, RCC_ADC1MCLK_DIV8);
    ADC_ConfigClk(ADC_CTRL3_CKMOD_AHB, RCC_ADCHCLK_DIV16); /* RCC_ADCHCLK_DIV16*/
      
    GPIO_InitStruct(&GPIO_InitStructure);
    /* Configure PA as analog input -------------------------*/
    GPIO_InitStructure.Pin       = GPIO_PIN_3;
    GPIO_InitStructure.GPIO_Mode = GPIO_MODE_ANALOG;
    GPIO_InitPeripheral(GPIOA, &GPIO_InitStructure);
        
    /* ADC configuration ------------------------------------------------------*/
    ADC_InitStructure.MultiChEn      = DISABLE;
    ADC_InitStructure.ContinueConvEn = DISABLE;
    ADC_InitStructure.ExtTrigSelect  = ADC_EXT_TRIGCONV_NONE;
    ADC_InitStructure.DatAlign       = ADC_DAT_ALIGN_R;
    ADC_InitStructure.ChsNumber      = 1;
    ADC_Init(ADC, &ADC_InitStructure);
//    /* ADC1 regular channel13 configuration */
//    ADC_ConfigRegularChannel(ADC, ADC_CH_13_PC2, 1, ADC_SAMP_TIME_55CYCLES5);
//    /* Enable ADC DMA */
//    ADC_EnableDMA(ADC, ENABLE);

    //ADC_EnableVrefint(ENABLE);

    /* Enable ADC */
    ADC_Enable(ADC, ENABLE);
    /* Check ADC Ready */
    while(ADC_GetFlagStatusNew(ADC,ADC_FLAG_RDY) == RESET)
        ;
    while(ADC_GetFlagStatusNew(ADC,ADC_FLAG_PD_RDY))
        ;
}

uint16_t ADC_GetData(uint8_t ADC_Channel)
{
    uint16_t dat;
    ADC_ConfigRegularChannel(ADC, ADC_Channel, 1, ADC_SAMP_TIME_56CYCLES5);
    /* Start ADC Software Conversion */
    ADC_EnableSoftwareStartConv(ADC,ENABLE);
    while(ADC_GetFlagStatus(ADC,ADC_FLAG_ENDC)==0){
    }
    ADC_ClearFlag(ADC,ADC_FLAG_ENDC);
    ADC_ClearFlag(ADC,ADC_FLAG_STR);
    dat=ADC_GetDat(ADC);
    return dat;
}
回复

使用道具 举报

mj8abcd | 2022-10-13 17:01:23 | 显示全部楼层
回复

使用道具 举报

罗塘阮经天 | 2022-10-13 22:25:04 | 显示全部楼层
回复

使用道具 举报

zhang_tao_08 | 2022-10-14 08:23:25 | 显示全部楼层
回复

使用道具 举报

bidezhi7777 | 2022-10-14 08:38:24 | 显示全部楼层
回复

使用道具 举报

longxuekai | 2022-10-15 01:38:12 | 显示全部楼层
回复

使用道具 举报

kingweison | 2023-12-28 09:23:41 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

3

主题

0

回帖

0

积分

一级逆天

积分
0

终身成就奖