发现了正点RTC程序的一个错误,你们看看我找的对不对

2019-10-15 20:48发布


u8 RTC_Get(void)
{
    static u16 daycnt=0;
    u32 timecount=0;
    u32 temp=0;
    u16 temp1=0;          
    timecount=RTC_GetCounter();         
    temp=timecount/86400;
    if(daycnt!=temp)
    {          
        daycnt=temp;
        temp1=1970;
        while(temp>=365)
        {                                 
            if(Is_Leap_Year(temp1))
            {
               if(temp>=366)temp-=366;
               else {/*temp1++;*/break;}    //就是这里不应该有temp1++  
            }
            else temp-=365;          //ƽÄê
            temp1++;  
        }   
        calendar.w_year=temp1;//μÃμ½Äê·Y
        temp1=0;
        while(temp>=28)//3¬1yáËò»¸öÔÂ
        {
             if(Is_Leap_Year(calendar.w_year)&&temp1==1)
             {
                  if(temp>=29)temp-=29;
                  else break;
             }
             else
             {
                 if(temp>=mon_table[temp1])temp-=mon_table[temp1];
                 else break;
             }
             temp1++;  
        }
        calendar.w_month=temp1+1;
        calendar.w_date=temp+1;
    }
    temp=timecount%86400;
    calendar.hour=temp/3600;
    calendar.min=(temp%3600)/60;
    calendar.sec=(temp%3600)%60;
    calendar.week=RTC_Get_WeekDay(calendar.w_year,calendar.w_month,calendar.w_date);
    return 0;
}         


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。