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
117
121
122
129
133
136
137
/* ... */
#include "rtc.h"
/* ... */
/* ... */
Includes
#define RTC_ASYNCH_PREDIV 0x7F
#define RTC_SYNCH_PREDIV 0x00FF
Private defines
RTC_HandleTypeDef RtcHandle;
/* ... */
void RTC_Init(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;
Osc.OscillatorType = RCC_OSCILLATORTYPE_LSE;
Osc.LSEState = RCC_LSE_ON;
Osc.HSIState = RCC_HSI_OFF;
Osc.HSICalibrationValue = 0;
Osc.LSIState = RCC_LSI_OFF;
Osc.PLL.PLLState = RCC_PLL_NONE;
HAL_RCC_OscConfig(&Osc);
__HAL_RCC_RTC_CLKPRESCALER(RCC_RTCCLKSOURCE_LSE);
__HAL_RCC_RTC_CONFIG(RCC_RTCCLKSOURCE_LSE);
__HAL_RCC_RTC_ENABLE();
}{ ... }
/* ... */
void HAL_RTC_MspDeInit(RTC_HandleTypeDef *hrtc)
{
__HAL_RCC_RTC_DISABLE();
}{ ... }
/* ... */
void BACKUP_SaveParameter(uint32_t address, uint32_t data)
{
HAL_RTCEx_BKUPWrite(&RtcHandle,address,data);
}{ ... }
/* ... */
uint32_t BACKUP_RestoreParameter(uint32_t address)
{
return HAL_RTCEx_BKUPRead(&RtcHandle,address);
}{ ... }
/* ... */
/* ... */