RTC时钟没写怎么会变?

2019-08-19 18:06发布

碰到个问题烦请各位高人指点一下,在用STM32的RTC,也没有用写时间函数RTC_Set(u16 syear,u8 smon,u8 sday,u8 hour,u8 min,u8 sec),只是在程序中修改了时间值,比如说calendar.w_date = calendar.w_date + 1;再重新读取时间值
RTC_Get();//更新时间,那么日期就已经改了,很奇怪。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
11条回答
anazel
2019-08-20 18:38
正点原子 发表于 2016-9-13 22:30
你的RTC有没有正常跑先。。。

把RTC的实验例程稍作修改,取消RTC中断,用按键修改calendar.w_month,while循环中不停获取新的时间,是同样的现象,时间按照修改后的时间走,RESET后又恢复以前的时间。
        while(1)
        {                                                                    
                Key_Num = KEY_Scan(0);
               
                RTC_Get();//更新时间
               
                if(t!=calendar.sec)
                {
                        t=calendar.sec;
                        LCD_ShowNum(60,130,calendar.w_year,4,16);                                                                          
                        LCD_ShowNum(100,130,calendar.w_month,2,16);                                                                          
                        LCD_ShowNum(124,130,calendar.w_date,2,16);         
                        switch(calendar.week)
                        {
                                case 0:
                                        LCD_ShowString(60,148,200,16,16,"Sunday   ");
                                        break;
                                case 1:
                                        LCD_ShowString(60,148,200,16,16,"Monday   ");
                                        break;
                                case 2:
                                        LCD_ShowString(60,148,200,16,16,"Tuesday  ");
                                        break;
                                case 3:
                                        LCD_ShowString(60,148,200,16,16,"Wednesday");
                                        break;
                                case 4:
                                        LCD_ShowString(60,148,200,16,16,"Thursday ");
                                        break;
                                case 5:
                                        LCD_ShowString(60,148,200,16,16,"Friday   ");
                                        break;
                                case 6:
                                        LCD_ShowString(60,148,200,16,16,"Saturday ");
                                        break;  
                        }
                        LCD_ShowNum(60,162,calendar.hour,2,16);                                                                          
                        LCD_ShowNum(84,162,calendar.min,2,16);                                                                          
                        LCD_ShowNum(108,162,calendar.sec,2,16);
                        LED0=!LED0;
                }       
                delay_ms(10);

                switch(Key_Num)
                {
                        case 2: calendar.w_month = calendar.w_month-1;break;
                        case 4: calendar.w_month = calendar.w_month+1;break;
                }
        }  

一周热门 更多>