|
@@ -25,14 +25,16 @@ uint32_t get_system_sleep_time(void){
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
static void enable_wakeup_irq(void){
|
|
static void enable_wakeup_irq(void){
|
|
|
- //charger_detect_irq_enable(1);
|
|
|
|
|
- //hall_1_detect_irq_enable(1);
|
|
|
|
|
|
|
+ charger_detect_irq_enable(1);
|
|
|
|
|
+ hall_1_detect_irq_enable(1);
|
|
|
//hall_2_detect_irq_enable(1);
|
|
//hall_2_detect_irq_enable(1);
|
|
|
|
|
+ shark_rtc_start_alarm(RTC_ALARM_FOR_SLEEP);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
static void disable_wakeup_irq(void){
|
|
static void disable_wakeup_irq(void){
|
|
|
- //charger_detect_irq_enable(0);
|
|
|
|
|
- //hall_1_detect_irq_enable(0);
|
|
|
|
|
|
|
+ shark_rtc_stop_alarm();
|
|
|
|
|
+ charger_detect_irq_enable(0);
|
|
|
|
|
+ hall_1_detect_irq_enable(0);
|
|
|
//hall_2_detect_irq_enable(0);
|
|
//hall_2_detect_irq_enable(0);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -62,7 +64,7 @@ static void pre_deepsleep(void){
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- wdog_start(WDOG_TIME_FOR_SLEEP);
|
|
|
|
|
|
|
+ wdog_set_timeout(WDOG_TIME_FOR_SLEEP);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
static void post_deepsleep(void){
|
|
static void post_deepsleep(void){
|
|
@@ -79,7 +81,7 @@ static void post_deepsleep(void){
|
|
|
|
|
|
|
|
gd32_i2c_init(0, 100* 1000);
|
|
gd32_i2c_init(0, 100* 1000);
|
|
|
adc_init();
|
|
adc_init();
|
|
|
- wdog_start(4);
|
|
|
|
|
|
|
+ wdog_set_timeout(4);
|
|
|
current_calibrate();
|
|
current_calibrate();
|
|
|
wdog_reload();
|
|
wdog_reload();
|
|
|
printf("Sleep Exit, Total sleep time = %d s\n", _sleep_second_time);
|
|
printf("Sleep Exit, Total sleep time = %d s\n", _sleep_second_time);
|
|
@@ -89,7 +91,6 @@ void mcu_enter_deepsleep(void){
|
|
|
|
|
|
|
|
pre_deepsleep();
|
|
pre_deepsleep();
|
|
|
enable_wakeup_irq();
|
|
enable_wakeup_irq();
|
|
|
- shark_rtc_start_alarm(RTC_ALARM_FOR_SLEEP);
|
|
|
|
|
u32 start_time = shark_rtc_get_second();
|
|
u32 start_time = shark_rtc_get_second();
|
|
|
pmu_to_deepsleepmode(PMU_LDO_LOWPOWER, WFI_CMD);
|
|
pmu_to_deepsleepmode(PMU_LDO_LOWPOWER, WFI_CMD);
|
|
|
u32 end_time = shark_rtc_get_second();
|
|
u32 end_time = shark_rtc_get_second();
|
|
@@ -98,7 +99,6 @@ void mcu_enter_deepsleep(void){
|
|
|
}else { //rtc second wrap
|
|
}else { //rtc second wrap
|
|
|
_sleep_second_time += (60 - start_time + end_time);
|
|
_sleep_second_time += (60 - start_time + end_time);
|
|
|
}
|
|
}
|
|
|
- shark_rtc_stop_alarm();
|
|
|
|
|
disable_wakeup_irq();
|
|
disable_wakeup_irq();
|
|
|
post_deepsleep();
|
|
post_deepsleep();
|
|
|
}
|
|
}
|