68 #define RTC_CLOCK_SOURCE_HSE
72 #ifdef RTC_CLOCK_SOURCE_HSE
73 #define RTC_ASYNCH_PREDIV 99U
74 #define RTC_SYNCH_PREDIV 9U
75 #define RCC_RTCCLKSOURCE_1MHZ ((uint32_t)((uint32_t)RCC_BDCR_RTCSEL | (uint32_t)((HSE_VALUE/1000000U) << 16U)))
77 #define RTC_ASYNCH_PREDIV 0U
78 #define RTC_SYNCH_PREDIV 31U
105 __IO uint32_t counter = 0U;
109 HAL_StatusTypeDef status;
111 #ifdef RTC_CLOCK_SOURCE_LSE
115 RCC_OscInitStruct.
LSEState = RCC_LSE_ON;
117 #elif defined (RTC_CLOCK_SOURCE_LSI)
121 RCC_OscInitStruct.
LSIState = RCC_LSI_ON;
123 #elif defined (RTC_CLOCK_SOURCE_HSE)
127 RCC_OscInitStruct.
HSEState = RCC_HSE_ON;
131 #error Please select the RTC Clock source
135 if (status == HAL_OK)
140 if (status == HAL_OK)
143 __HAL_RCC_RTC_ENABLE();
156 hRTC_Handle.Instance = RTC;
157 hRTC_Handle.Init.HourFormat = RTC_HOURFORMAT_24;
158 hRTC_Handle.Init.AsynchPrediv = RTC_ASYNCH_PREDIV;
159 hRTC_Handle.Init.SynchPrediv = RTC_SYNCH_PREDIV;
160 hRTC_Handle.Init.OutPut = RTC_OUTPUT_DISABLE;
161 hRTC_Handle.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
162 hRTC_Handle.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
165 if (status == HAL_OK)
168 __HAL_RTC_WRITEPROTECTION_DISABLE(&hRTC_Handle);
171 __HAL_RTC_WAKEUPTIMER_DISABLE(&hRTC_Handle);
174 __HAL_RTC_WAKEUPTIMER_DISABLE_IT(&hRTC_Handle, RTC_IT_WUT);
177 while (__HAL_RTC_WAKEUPTIMER_GET_FLAG(&hRTC_Handle, RTC_FLAG_WUTWF) == RESET)
179 if (counter++ == (SystemCoreClock / 48U))
185 if (status == HAL_OK)
188 __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
191 __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(&hRTC_Handle, RTC_FLAG_WUTF);
194 hRTC_Handle.Instance->WUTR = 0U;
197 hRTC_Handle.Instance->CR &= (uint32_t)~RTC_CR_WUCKSEL;
200 hRTC_Handle.Instance->CR |= (uint32_t)RTC_WAKEUPCLOCK_CK_SPRE_16BITS;
203 __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_IT();
205 __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_EDGE();
208 __HAL_RTC_WAKEUPTIMER_ENABLE_IT(&hRTC_Handle,RTC_IT_WUT);
211 __HAL_RTC_WAKEUPTIMER_ENABLE(&hRTC_Handle);
214 __HAL_RTC_WRITEPROTECTION_ENABLE(&hRTC_Handle);
220 if (TickPriority < (1UL << __NVIC_PRIO_BITS))
223 uwTickPrio = TickPriority;
241 __HAL_RTC_WRITEPROTECTION_DISABLE(&hRTC_Handle);
243 __HAL_RTC_WAKEUPTIMER_DISABLE_IT(&hRTC_Handle, RTC_IT_WUT);
245 __HAL_RTC_WRITEPROTECTION_ENABLE(&hRTC_Handle);
256 __HAL_RTC_WRITEPROTECTION_DISABLE(&hRTC_Handle);
258 __HAL_RTC_WAKEUPTIMER_ENABLE_IT(&hRTC_Handle, RTC_IT_WUT);
260 __HAL_RTC_WRITEPROTECTION_ENABLE(&hRTC_Handle);
void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)
Sets the priority of an interrupt.
void HAL_NVIC_EnableIRQ(IRQn_Type IRQn)
Enables a device specific interrupt in the NVIC interrupt controller.
void HAL_IncTick(void)
This function is called to increment a global variable "uwTick" used as application time base.
void HAL_ResumeTick(void)
Resume Tick increment.
void RTC_WKUP_IRQHandler(void)
This function handles WAKE UP TIMER interrupt request.
HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)
This function configures the RTC_WKUP as a time base source. The time source is configured to have 1m...
void HAL_SuspendTick(void)
Suspend Tick increment.
void HAL_RTCEx_WakeUpTimerEventCallback(RTC_HandleTypeDef *hrtc)
Wake Up Timer Event Callback in non blocking mode.
HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit)
Initializes the RCC extended peripherals clocks according to the specified parameters in the RCC_Peri...
uint32_t PeriphClockSelection
uint32_t RTCClockSelection
RCC extended clocks structure definition.
HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
Initializes the RCC Oscillators according to the specified parameters in the RCC_OscInitTypeDef.
RCC Internal/External Oscillator (HSE, HSI, LSE and LSI) configuration structure definition.
void HAL_RTCEx_WakeUpTimerIRQHandler(RTC_HandleTypeDef *hrtc)
Handles Wakeup Timer interrupt request.
HAL_StatusTypeDef HAL_RTC_Init(RTC_HandleTypeDef *hrtc)
Initializes the RTC peripheral.
struct __RTC_HandleTypeDef else typedef struct endif RTC_HandleTypeDef
RTC Handle Structure definition.
This file contains all the functions prototypes for the HAL module driver.