void adc1_isr(void) { int16 result; uint8 ab = LPLD_ADC_GetSC1nCOCO(ADC1);//判断转换完成的是A组还是B组 result = LPLD_ADC_GetResult(ADC1, ab);//获取采样结果 printf("ADC1_R[%d]=%d\r\n", ab, result);//打印输出结果 LPLD_ADC_EnableConversion(ADC1, DAD1, 0, TRUE); }
void init_ADC() { adc0_init_struct.ADC_Adcx = ADC0; //选择ADC0 adc0_init_struct.ADC_BitMode = SE_12BIT; //配置转换精度 adc0_init_struct.ADC_CalEnable = TRUE; //使能初始化自动校准 adc0_init_struct.ADC_HwTrgCfg = HW_TRGA; //配置为硬件触发转换 adc0_init_struct.ADC_DmaEnable = TRUE; //使能DMA adc0_init_struct.ADC_SampleTimeCfg = SAMTIME_LONG; //初始化ADC0 LPLD_ADC_Init(adc0_init_struct); //使能ADC0的AD8输入引脚复用功能 LPLD_ADC_Chn_Enable(ADC0, AD8); //使能ADC0的AD8输入通道、禁用转换完成中断 LPLD_ADC_EnableConversion(ADC0, AD8, 0, FALSE); //使能PTB0通道 adc0_init_struct.ADC_Adcx = ADC1; LPLD_ADC_Init(adc0_init_struct); //使能ADC0的AD8输入引脚复用功能 LPLD_ADC_Chn_Enable(ADC0, AD8); //使能ADC0的AD8输入通道、禁用转换完成中断 LPLD_ADC_EnableConversion(ADC1, AD8, 0, FALSE); //使能PTB0通道 }
void adc_init(myadc *adc, uint32 PIT_PeriodUs) { pdb_init(adc->PDB_TriggerInputSourceSel, adc->ADC_Adcx); adc_init_struct.ADC_Adcx = adc->ADC_Adcx; adc_init_struct.ADC_DiffMode = ADC_SE; //单端采集 adc_init_struct.ADC_BitMode = SE_12BIT; //单端12位精度 adc_init_struct.ADC_SampleTimeCfg = SAMTIME_SHORT; //短采样时间 adc_init_struct.ADC_HwAvgSel = HW_4AVG; //4次硬件平均 adc_init_struct.ADC_PgaGain = PGA_1GAIN; //1倍增益 adc_init_struct.ADC_MuxSel = MUX_ADXXA; //A输入通道 adc_init_struct.ADC_CalEnable = TRUE; //使能初始化校验 adc_init_struct.ADC_HwTrgCfg = HW_TRGA; //禁用硬件触发转换 adc_init_struct.ADC_DmaEnable = FALSE; //禁用DMA adc_init_struct.ADC_Isr = adc->isr; //设置ADC中断函数 LPLD_ADC_Init(adc_init_struct); //初始化ADC0 LPLD_ADC_Chn_Enable(adc->ADC_Adcx, adc->chn); //使能ADC0的DAD1输入引脚复用功能 LPLD_ADC_EnableConversion(adc->ADC_Adcx, adc->chn, 0, TRUE); //使能ADC0的DAD1输入通道及其转换完成中断 LPLD_ADC_EnableIrq(adc_init_struct); //使能ADC0中断 pit_init(adc->PIT_Pitx, PIT_PeriodUs); }