1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
30
31
32
36
37
38
43
44
45
46
47
48
55
56
57
58
59
60
61
62
63
66
67
68
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
103
108
109
110
111
112
113
114
115
116
117
118
122
123
130
134
135
140
144
145
150
157
158
163
172
173
178
182
183
186
187
/* ... */
#include "k_rtc.h"
/* ... */
/* ... */
Includes
#define RTC_ASYNCH_PREDIV 0x7F
#define RTC_SYNCH_PREDIV 0x00FF
Private defines
RTC_HandleTypeDef RtcHandle;
/* ... */
void k_CalendarBkupInit(void)
{
/* ... */
RtcHandle.Instance = RTC;
RtcHandle.Init.HourFormat = RTC_HOURFORMAT_24;
RtcHandle.Init.AsynchPrediv = RTC_ASYNCH_PREDIV;
RtcHandle.Init.SynchPrediv = RTC_SYNCH_PREDIV;
RtcHandle.Init.OutPut = RTC_OUTPUT_DISABLE;
RtcHandle.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
RtcHandle.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
if(HAL_RTC_Init(&RtcHandle) != HAL_OK)
{
}if (HAL_RTC_Init(&RtcHandle) != HAL_OK) { ... }
}{ ... }
/* ... */
void HAL_RTC_MspInit(RTC_HandleTypeDef *hrtc)
{
RCC_OscInitTypeDef Osc;
RCC_PeriphCLKInitTypeDef PeriphClkInitStruct;
Osc.OscillatorType = RCC_OSCILLATORTYPE_LSI | RCC_OSCILLATORTYPE_LSE;
Osc.PLL.PLLState = RCC_PLL_NONE;
Osc.LSEState = RCC_LSE_ON;
Osc.LSIState = RCC_LSI_OFF;
HAL_RCC_OscConfig(&Osc);
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC;
PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct);
__HAL_RCC_RTC_ENABLE();
}{ ... }
/* ... */
void HAL_RTC_MspDeInit(RTC_HandleTypeDef *hrtc)
{
__HAL_RCC_RTC_DISABLE();
}{ ... }
/* ... */
void k_BkupSaveParameter(uint32_t address, uint32_t data)
{
HAL_RTCEx_BKUPWrite(&RtcHandle,address,data);
}{ ... }
/* ... */
uint32_t k_BkupRestoreParameter(uint32_t address)
{
return HAL_RTCEx_BKUPRead(&RtcHandle,address);
}{ ... }
/* ... */
void k_GetTime( RTC_TimeTypeDef *Time)
{
HAL_RTC_GetTime(&RtcHandle, Time, RTC_FORMAT_BIN);
}{ ... }
/* ... */
void k_SetTime( RTC_TimeTypeDef *Time)
{
Time->StoreOperation = 0;
Time->SubSeconds = 0;
Time->DayLightSaving = 0;
HAL_RTC_SetTime(&RtcHandle, Time, RTC_FORMAT_BIN);
}{ ... }
/* ... */
void k_GetDate( RTC_DateTypeDef *Date)
{
HAL_RTC_GetDate(&RtcHandle, Date, RTC_FORMAT_BIN);
if((Date->Date == 0) || (Date->Month == 0))
{
Date->Date = Date->Month = 1;
}if ((Date->Date == 0) || (Date->Month == 0)) { ... }
}{ ... }
/* ... */
void k_SetDate( RTC_DateTypeDef *Date)
{
HAL_RTC_SetDate(&RtcHandle, Date, RTC_FORMAT_BIN);
}{ ... }
/* ... */
/* ... */