ESP8266之RTC处理代码

void ICACHE_FLASH_ATTR rtcCountInit(void)
{
os_printf( "rtc time init...\r\n");   
rtcTime.magic = RTC_MAGIC;  
rtcTime.timeAcc = 0;
rtcTime.timeBase = system_get_rtc_time();  
os_printf( "time base: %d \r\n", rtcTime.timeBase ); 
system_rtc_mem_write(64, &rtcTime, sizeof(rtcTime));    
}








void ICACHE_FLASH_ATTR rtcCount()
{  
static uint8 count = 0;  
system_rtc_mem_read(64, &rtcTime, sizeof(rtcTime));  // Initialise the time struct 
if(rtcTime.magic != RTC_MAGIC)  
{    
os_printf( "rtc time init...\r\n");        
rtcTime.magic = RTC_MAGIC;    
rtcTime.timeAcc = 0;    
rtcTime.timeBase = system_get_rtc_time();        
os_printf( "time base: %d \r\n", rtcTime.timeBase );  
}  
//os_printf("===================\r\n");  
//os_printf("RTC time test\r\n");  
uint32 rtcT1, rtcT2;  
uint32 st1, st2;  
uint32 cal1, cal2;  
rtcT1 = system_get_rtc_time();  
st1 = system_get_time();  
cal1 = system_rtc_clock_cali_proc();   
os_delay_us(300);  
st2 = system_get_time();  
rtcT2 = system_get_rtc_time();  
cal2 = system_rtc_clock_cali_proc();  
//os_printf("  RTC t2 - t1: %d \r\n", rtcT2 - rtcT1);  
//os_printf("  SYS t2 - t1: %d \r\n", st2 - st1);  
//os_printf("Cal 1: %d.%d \r\n", ((cal1 * 1000) >> 12) / 1000, ((cal1 * 1000) >> 12) % 1000 );  
//os_printf("Cal 2: %d.%d \r\n", ((cal2 * 1000) >> 12) / 1000, ((cal2 * 1000) >> 12) % 1000 );  
//os_printf("===================\r\n");    
rtcTime.timeAcc += ( ((uint64) (rtcT2 - rtcTime.timeBase)) * ((uint64) ((cal2 * 1000) >> 12)) );  
//os_printf("RTC time accuracy: %lld \r\n", rtcTime.timeAcc);  
//os_printf("Power on time: \r\n");  
//os_printf(" - %lld us\r\n", rtcTime.timeAcc / 1000);  
//os_printf(" - %lld.%02lld S\r\n", (rtcTime.timeAcc / 10000000) / 100, (rtcTime.timeAcc / 10000000) % 100);  
rtcTime.timeBase = rtcT2;  
system_rtc_mem_write(64, &rtcTime, sizeof(rtcTime));    
//os_printf("-----------------------------\r\n");  


/*
if ( 5 == (count++) )  
{    
os_printf("System restart\r\n");    
system_restart();  
}  
else  
{    
os_printf("Continue...");  
}
*/
}










s32 ICACHE_FLASH_ATTR GetHardRtcValue(void)
{
return (rtcTime.timeAcc / 10000000) / 100;
}








void ICACHE_FLASH_ATTR user_init_Rtc(void)
{  
rtcCount();  
os_printf("SDK version:%s\n", system_get_sdk_version());    
os_timer_disarm(&rtc_test_t);  
os_timer_setfn(&rtc_test_t, rtcCount, NULL);  
os_timer_arm(&rtc_test_t, 10000, 1);
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值