时间 RTC 相关的代码
#define IsLeapYear(year) (!((year) % 400) || (((year) % 100) && !((year) % 4)))
uint8_t rtc_MonthLength(uint8_t lpyr,uint8_t month)
{
uint8_t days = 31;
if(month == 2)
{
days = (28 + lpyr);
}
else
{
if (month > 7)
{
month--;
}
if((month & 1)==0)
{
days = 30;
}
}
return (days);
}
void rtc_CalcRTC(void)
{
uint8_t leapYear = IsLeapYear( year );
seconds ++ ;
if(seconds >= 60)
{
seconds = 0;
minutes++;
}
if(minutes >= 60)
{
minutes = 0;
hour++;
}
if(hour >= 24)
{
hour = 0;
day++;
}
if(day > rtc_MonthLength(leapYear,month))
{
day = 1;
month ++ ;
}
if(month > 12)
{
month = 1;
year ++ ;
}
}