- void adcInit(void)
- {
- Enable_ADC_BandGap;
- gAdcChannel=1;
- clr_ADCS;//或者clr_ADCF;这里就看你使用的是中断的形式还是轮询的形式
- set_ADCS;//如果你使用的是官网的没有做任何修改的BSP的话,这句一定要加上,因为
- //单独Enable_ADC_BandGap是不会启动ADC转换的,后面的也是一样的
- }
- void sysAdcCheck(void)//ADC数据处理的函数 轮询的方式,如果是中断的方式就直接是在中断处理函数中
- {
- u16 adcTempData;
- if(ADCS == 0)
- {//adc 数据已经采集出来了
- adcTempData = (ADCRH<<4)+ADCRL;//得到结果
- clr_ADCEN;//还没有处理完数据的时候先将ADC关闭掉,
- switch(gAdcChannel)
- {
- case 1:
- Eanble_ADC_AIN2;
- set_ADCS;//建议最好重新自己写一下这些使能某个通道的宏定义,将这句话包含进去
- gAdcChannel=2;//通道也最好使用宏定义,比如是电压的通道,电流的通道 等
- break;
- case 2:
- Eanble_ADC_AIN3;
- set_ADCS;//建议最好重新自己写一下这些使能某个通道的宏定义,将这句话包含进去
- gAdcChannel=3;//通道也最好使用宏定义,比如是电压的通道,电流的通道 等
- break;
- case 3://所有的通道都结束了 就回到最开始的那个通道
- Eanble_ADC_AIN1;
- set_ADCS;//建议最好重新自己写一下这些使能某个通道的宏定义,将这句话包含进去
- gAdcChannel=1;//通道也最好使用宏定义,比如是电压的通道,电流的通道 等
- break;
- default:
- Eanble_ADC_AIN1;
- set_ADCS;//建议最好重新自己写一下这些使能某个通道的宏定义,将这句话包含进去
- gAdcChannel=1;//通道也最好使用宏定义,比如是电压的通道,电流的通道 等
- break;
- }
- }
- }
|