|
使用cubemx配置的。 时间是正常走动的,可惜日期就是不变化。
- RTC_HandleTypeDef hrtc;
- /* RTC init function */
- void MX_RTC_Init(void)
- {
- RTC_TimeTypeDef sTime = {0};
- RTC_DateTypeDef sDate = {0};
- /** Initialize RTC Only
- */
- hrtc.Instance = RTC;
- hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
- hrtc.Init.AsynchPrediv = 127;
- hrtc.Init.SynchPrediv = 255;
- hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
- hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
- hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
- if (HAL_RTC_Init(&hrtc) != HAL_OK)
- {
- Error_Handler();
- }
- /* USER CODE BEGIN Check_RTC_BKUP */
- HAL_RTC_GetDate(&hrtc, &sDate, RTC_FORMAT_BIN);
- if(sDate.Year!=0) return; //如果已经初始化过了,就不用再设定时间了。2020-9-4
- /* USER CODE END Check_RTC_BKUP */
- /** Initialize RTC and set the Time and Date
- */
- sTime.Hours = 12;
- sTime.Minutes = 0;
- sTime.Seconds = 0;
- sTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
- sTime.StoreOperation = RTC_STOREOPERATION_RESET;
- if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BIN) != HAL_OK)
- {
- Error_Handler();
- }
- sDate.WeekDay = RTC_WEEKDAY_MONDAY;
- sDate.Month = RTC_MONTH_JANUARY;
- sDate.Date = 2;
- sDate.Year = 20;
- if (HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BIN) != HAL_OK)
- {
- Error_Handler();
- }
- /** Enable Calibrartion
- */
- if (HAL_RTCEx_SetCalibrationOutPut(&hrtc, RTC_CALIBOUTPUT_512HZ) != HAL_OK)
- {
- Error_Handler();
- }
- }
- void HAL_RTC_MspInit(RTC_HandleTypeDef* rtcHandle)
- {
- if(rtcHandle->Instance==RTC)
- {
- /* USER CODE BEGIN RTC_MspInit 0 */
- /* USER CODE END RTC_MspInit 0 */
- /* RTC clock enable */
- __HAL_RCC_RTC_ENABLE();
- /* USER CODE BEGIN RTC_MspInit 1 */
- /* USER CODE END RTC_MspInit 1 */
- }
- }
复制代码
|
|