static int shell_adcalib(int argc, char *argv[]) { int i; i = ReadBatVol(); PrintLog(0, "电池电压: %dmV\n", i); i = ReadTemperature(); PrintLog(0, "当前温度: %d.%dC\n", i/10, i%10); return 0; }
/** * @brief 可充电电池监测 */ static void BatteryMonitor(void) { #define VOL_CHARGE 4800 #define VOL_UNCHARGE 5700 #define VOL_BATLOW 3000 #define VOL_BATBAD 5810 #define BATCAP_CHK ((VOL_UNCHARGE-VOL_CHARGE)/8) int batv = ReadBatVol(); if(batv < VOL_BATLOW) { // 没插电池 BatCapacityStatus = 0; //GpioSetValue(GPIO_BAT_CHARGE, 0); //停止充电 if(0 == RunState.batbad) { PrintLog(LOGTYPE_ALARM, "battery disconnected!\n"); RunStateModify()->batbad = 1; } /*if(RunState.batcharge) { PrintLog(LOGTYPE_ALARM, "battery stop charge\n"); RunStateModify()->batcharge = 0; }*/ return; } else if(RunState.batbad) { PrintLog(LOGTYPE_ALARM, "battery connected!\n"); RunStateModify()->batbad = 0; } if(batv < VOL_UNCHARGE) { GpioSetValue(GPIO_BAT_CHARGE, 1); //充电 if(0 == RunState.batcharge) { PrintLog(LOGTYPE_ALARM, "battery start charge\n"); RunStateModify()->batcharge = 1; } } else { GpioSetValue(GPIO_BAT_CHARGE, 0); //停止充电 if(RunState.batcharge) { PrintLog(LOGTYPE_ALARM, "battery stop charge\n"); RunStateModify()->batcharge = 0; } } if(batv <= (VOL_CHARGE+BATCAP_CHK)) BatCapacityStatus = 0; else if(batv >= (VOL_UNCHARGE-BATCAP_CHK)) BatCapacityStatus = 3; else if(batv < ((VOL_UNCHARGE+VOL_CHARGE)/2)) BatCapacityStatus = 1; else BatCapacityStatus = 2; }