Here ar a part of the code for reference:
1 if(LocalTimes.Bit.second++>=59) 2 { 3 LocalTimes.Bit.second=0; 4 if(LocalTimes.Bit.minute++>=59) 5 { 6 LocalTimes.Bit.minute=0; 7 if(LocalTimes.Bit.hour++>=23) 8 { 9 LocalTimes.Bit.hour=0;10 LocalTimes.Bit.day++;11 if(LocalTimes.Bit.month==2)12 {13 year=LocalTimes.Bit.year+1990;14 if((year%4==0&&year%100!=0)||(year%400==0))15 {16 if(LocalTimes.Bit.day>29)17 {18 LocalTimes.Bit.day=1;19 LocalTimes.Bit.month++;20 }21 }22 else23 {24 if(LocalTimes.Bit.day>28)25 {26 LocalTimes.Bit.day=1;27 LocalTimes.Bit.month++;28 }29 }30 }31 else if(LocalTimes.Bit.month%2) 32 {33 if(LocalTimes.Bit.month==9||LocalTimes.Bit.month==11)34 {35 if(LocalTimes.Bit.day>30)36 {37 LocalTimes.Bit.day=1;38 LocalTimes.Bit.month++;39 }40 }41 else42 {43 if(LocalTimes.Bit.day>31)44 {45 LocalTimes.Bit.day=1;46 LocalTimes.Bit.month++;47 }48 }49 }50 else 51 {52 if(LocalTimes.Bit.month==4||LocalTimes.Bit.month==6)53 {54 if(LocalTimes.Bit.day>30)55 {56 LocalTimes.Bit.day=1;57 LocalTimes.Bit.month++;58 }59 }60 else61 {62 if(LocalTimes.Bit.day>31)63 {64 LocalTimes.Bit.day=1;65 LocalTimes.Bit.month++;66 if(LocalTimes.Bit.month>12)67 {68 LocalTimes.Bit.month=1;69 if(LocalTimes.Bit.year++>62)70 {71 LocalTimes.Bit.year=9;72 }73 }74 }75 }76 }77 }78 }79 }
Please note that the codes should be executed in the timer interrupt routine.
changed into seconds by using the RTC value:1 static posix_time_t update_sntp_from_localtimer(void) 2 { 3 struct tm timestamp; 4 time_t t2 = 0; 5 //0 is the first month, 1 is the second month,so on... 6 timestamp.tm_mon = LocalTimestamp.BXI_Timestamp.Bit.month - 1; 7 timestamp.tm_mday = LocalTimestamp.BXI_Timestamp.Bit.day; //day of month 8 timestamp.tm_year = LocalTimestamp.year - 1900; //start from 1900, \ 9 e.g. 1900-1970 = 2208988800 seconds10 timestamp.tm_hour = LocalTimestamp.BXI_Timestamp.Bit.hour;11 timestamp.tm_min = LocalTimestamp.BXI_Timestamp.Bit.minute;12 timestamp.tm_sec = LocalTimestamp.BXI_Timestamp.Bit.second;13 timestamp.tm_yday = 0; //day of year14 timestamp.tm_isdst = 0;15 t2 = mktime(×tamp);16 return t2;17 }
Thank you!