source: ctrl/firmware/Main/CubeMX/Core/Src/rtc.c

Last change on this file was 87, checked in by Zed, 3 months ago

RTC is working.

File size: 3.5 KB
Line 
1/* USER CODE BEGIN Header */
2/**
3  ******************************************************************************
4  * @file    rtc.c
5  * @brief   This file provides code for the configuration
6  *          of the RTC instances.
7  ******************************************************************************
8  * @attention
9  *
10  * Copyright (c) 2024 STMicroelectronics.
11  * All rights reserved.
12  *
13  * This software is licensed under terms that can be found in the LICENSE file
14  * in the root directory of this software component.
15  * If no LICENSE file comes with this software, it is provided AS-IS.
16  *
17  ******************************************************************************
18  */
19/* USER CODE END Header */
20/* Includes ------------------------------------------------------------------*/
21#include "rtc.h"
22
23/* USER CODE BEGIN 0 */
24
25/* USER CODE END 0 */
26
27RTC_HandleTypeDef hrtc;
28
29/* RTC init function */
30void MX_RTC_Init(void)
31{
32
33  /* USER CODE BEGIN RTC_Init 0 */
34
35  /* USER CODE END RTC_Init 0 */
36
37  RTC_TimeTypeDef sTime = {0};
38  RTC_DateTypeDef sDate = {0};
39
40  /* USER CODE BEGIN RTC_Init 1 */
41
42  /* USER CODE END RTC_Init 1 */
43
44  /** Initialize RTC Only
45  */
46  hrtc.Instance = RTC;
47  hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
48  hrtc.Init.AsynchPrediv = 127;
49  hrtc.Init.SynchPrediv = 255;
50  hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
51  hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
52  hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
53  hrtc.Init.OutPutRemap = RTC_OUTPUT_REMAP_NONE;
54  if (HAL_RTC_Init(&hrtc) != HAL_OK)
55  {
56    Error_Handler();
57  }
58
59  /* USER CODE BEGIN Check_RTC_BKUP */
60
61  uint32_t firstRunID = HAL_RTCEx_BKUPRead(&hrtc, RTC_DATE_TIME_REG);
62  if (firstRunID == RTC_DATE_TIME_FIRST_START_ID) return;
63
64  /* USER CODE END Check_RTC_BKUP */
65
66  /** Initialize RTC and set the Time and Date
67  */
68  sTime.Hours = 12;
69  sTime.Minutes = 0;
70  sTime.Seconds = 0;
71  sTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
72  sTime.StoreOperation = RTC_STOREOPERATION_RESET;
73  if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BIN) != HAL_OK)
74  {
75    Error_Handler();
76  }
77  sDate.WeekDay = RTC_WEEKDAY_MONDAY;
78  sDate.Month = RTC_MONTH_JANUARY;
79  sDate.Date = 1;
80  sDate.Year = 25;
81
82  if (HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BIN) != HAL_OK)
83  {
84    Error_Handler();
85  }
86  /* USER CODE BEGIN RTC_Init 2 */
87
88  HAL_RTCEx_BKUPWrite(&hrtc, RTC_DATE_TIME_REG, RTC_DATE_TIME_FIRST_START_ID);
89
90  /* USER CODE END RTC_Init 2 */
91
92}
93
94void HAL_RTC_MspInit(RTC_HandleTypeDef* rtcHandle)
95{
96
97  RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
98  if(rtcHandle->Instance==RTC)
99  {
100  /* USER CODE BEGIN RTC_MspInit 0 */
101
102  /* USER CODE END RTC_MspInit 0 */
103
104  /** Initializes the peripherals clock
105  */
106    PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC;
107    PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
108    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
109    {
110      Error_Handler();
111    }
112
113    /* RTC clock enable */
114    __HAL_RCC_RTC_ENABLE();
115  /* USER CODE BEGIN RTC_MspInit 1 */
116
117  /* USER CODE END RTC_MspInit 1 */
118  }
119}
120
121void HAL_RTC_MspDeInit(RTC_HandleTypeDef* rtcHandle)
122{
123
124  if(rtcHandle->Instance==RTC)
125  {
126  /* USER CODE BEGIN RTC_MspDeInit 0 */
127
128  /* USER CODE END RTC_MspDeInit 0 */
129    /* Peripheral clock disable */
130    __HAL_RCC_RTC_DISABLE();
131  /* USER CODE BEGIN RTC_MspDeInit 1 */
132
133  /* USER CODE END RTC_MspDeInit 1 */
134  }
135}
136
137/* USER CODE BEGIN 1 */
138
139/* USER CODE END 1 */
Note: See TracBrowser for help on using the repository browser.