|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
国民技术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;
} |
|