定义在adc_api.h
系统定义adc扫描的处理周期,2ms一次,每次扫描一个通道。
#if !ADKEY_SD_MULT_EN
LOOP_DETECT_REGISTER(adc_scan_detect) = {
.time = 1,
.fun = adc_scan,
};
#endif
每次扫描一个通道,总共5个通道,系统默认第一个通道为AD按键通道,在下面数组变量中体现
void adc_scan()
{
static u8 channel = 0;
u8 next_channel;
next_channel = channel + 1;
if (next_channel == R_MAX_AD_CHANNEL) {
next_channel = 0;
}
/* 这些是无关紧要的代码块
#if ADKEY_SD_MULT_EN
if (next_channel == R_AD_CH_KEY) {
if (adkey_sd_mult_sd_suspend() == true) {
key_ad_info.key_init();
adc_value[channel++] = adc_res_api(ad_table[next_channel]);
if (channel == R_MAX_AD_CHANNEL) {
channel = 0;
}
next_channel = channel + 1;
adc_value[channel++] = adc_res_api(ad_table[next_channel]);
adkey_sd_mult_set_sd_io();
adkey_sd_mult_sd_resume();
return;
} else {
adc_value[channel] = adc_res_api(ad_table[next_channel + 1]); //跳过ADKEY的通道
channel += 2;
if (channel >= R_MAX_AD_CHANNEL) {
channel -= R_MAX_AD_CHANNEL;
}
return;
}
}
#endif
*/
adc_value[channel++] = adc_res_api(ad_table[next_channel]); //核心处理部分
// otp_printf("c=%d v=%d ",channel-1,adc_value[channel-1]);
if (channel == R_MAX_AD_CHANNEL) {
channel = 0;
}
}
ad转换函数,输入采集通道,返回通道采集值
u16 adc_res_api(u32 channel)
{
u16 adc_value = 0;
u16 adc_con_tmp = 0;
while (