[应用相关] stm32 rtc时钟时间突然变成2000 01 01 00:00:00而且无法设置

[复制链接]
990|2
 楼主| 漫天星yl 发表于 2021-2-28 22:28 | 显示全部楼层 |阅读模式
突然变成2000 01 01 00:00:00而且无法设置
就突然变成了2000 01 01 00:00:00,时间不走,改了timeSet_falg(存入BKP的设置时间标志)也无法设置时间和日期  

 楼主| 漫天星yl 发表于 2021-2-28 22:29 | 显示全部楼层
主要代码如下:

  1. HAL_StatusTypeDef RTC_Set_Time(u8 hour,u8 min,u8 sec,u8 ampm)
  2. {//RTC时间设置
  3.         RTC_TimeTypeDef RTC_TimeStructure;
  4.         RTC_TimeStructure.Hours=hour;
  5.         RTC_TimeStructure.Minutes=min;
  6.         RTC_TimeStructure.Seconds=sec;
  7.         RTC_TimeStructure.TimeFormat=ampm;
  8.         RTC_TimeStructure.DayLightSaving=RTC_DAYLIGHTSAVING_NONE;
  9.         RTC_TimeStructure.StoreOperation=RTC_STOREOPERATION_RESET;
  10.         return HAL_RTC_SetTime(&RTC_Handler,&RTC_TimeStructure,RTC_FORMAT_BIN);        
  11. }


  12. /
  13. HAL_StatusTypeDef RTC_Set_Date(u8 year,u8 month,u8 date,u8 week)
  14. {//RTC日期设置
  15.         RTC_DateTypeDef RTC_DateStructure;
  16.         RTC_DateStructure.Date=date;
  17.         RTC_DateStructure.Month=month;
  18.         RTC_DateStructure.WeekDay=week;
  19.         RTC_DateStructure.Year=year;
  20.         return HAL_RTC_SetDate(&RTC_Handler,&RTC_DateStructure,RTC_FORMAT_BIN);
  21. }



  22. #define TimeSet_falg 0X9127


  23. u8 RTC_Init(void)//RTC初始化
  24. {
  25.                 RTC_Handler.Instance=RTC;
  26.     RTC_Handler.Init.HouRFormat=RTC_HOURFORMAT_24;//RTC设置为24小时格式
  27.     RTC_Handler.Init.AsynchPrediv=0X7F;           //RTC异步分频系数(1~0X7F)
  28.     RTC_Handler.Init.SynchPrediv=0XFF;            //RTC同步分频系数(0~7FFF)   
  29.     RTC_Handler.Init.OutPut=RTC_OUTPUT_DISABLE;     
  30.     RTC_Handler.Init.OutPutPolarity=RTC_OUTPUT_POLARITY_HIGH;
  31.     RTC_Handler.Init.OutPutType=RTC_OUTPUT_TYPE_OPENDRAIN;
  32.     if(HAL_RTC_Init(&RTC_Handler)!=HAL_OK) return 2;
  33.       
  34.     if(HAL_RTCEx_BKUPRead(&RTC_Handler,RTC_BKP_DR19)!=TimeSet_falg)//是否第一次配置0X5870
  35.     {
  36.         RTC_Set_Time(17,3,40,RTC_HOURFORMAT12_PM);                //设置时间 ,根据实际时间修改
  37.                                 RTC_Set_Date(20,12,12,6);                                    //设置日期
  38.         HAL_RTCEx_BKUPWrite(&RTC_Handler,RTC_BKP_DR19,TimeSet_falg);//标记已经初始化过了
  39.     }
  40.     return 0;
  41. }
 楼主| 漫天星yl 发表于 2021-2-28 22:30 | 显示全部楼层
就突然变成了2000 01 01 00:00:00,时间不走,也不能设置时间和日期
63197603ba92ef3f04.png
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

350

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部