#include "os_types.h" #include "dbg_io.h" #include "iot_diag.h" #include "iot_io.h" #include "rtc_mon.h" #include "gp_timer.h" #include "iot_clock.h" #include "rtc_hw.h" uint32_t rtc_mon_int_process(uint32_t cnt, uint32_t st) { static int i=0, j=0; iot_printf("RTC clk variration exceed thresh hold,status: 0x%x cnt: 0x%x\r\n", st, cnt ); i++; if(i%20 == 0) { if(j){ j=0; rtc_tmr_set_comp(4, 0x20000); }else{ rtc_tmr_set_comp(4, 0x50000); j=1; } rtc_tmr_load_set(4, 1); } iot_delay_us(10000); rtc_tmr_load_set(4, 0); rtc_mon_start(1); return 0; } int IRAM_ATTR main(void) { gp_timer_init(); gp_timer_set(0, 1*10000000, 1); gp_timer_start(0); dbg_uart_init(); rtc_tmr_set_value(4, 0xffffffff); rtc_tmr_mode_set(4,1); rtc_tmr_set_load_mode(4,0); rtc_tmr_en(4, 1); rtc_mon_cfg_threshold(0x3f); rtc_mon_cfg_cycle(7); rtc_mon_cfg_type(CONT_MON); rtc_mon_int_init(rtc_mon_int_process); rtc_mon_start(1); while(1) { iot_delay_us(1000000); iot_printf("RTC MONITOR ...cfg: 0x%x rtc_tmr0 current cnt:0x%x\r\n", rtc_mon_get_cfg(),rtc_tmr_get_curr_value(4)); } return 0; }