• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  ****************************************************************************************
3  *
4  * @file    gr55xx_hal_calendar.h
5  * @author  BLE Driver Team
6  * @brief   Header file containing functions prototypes of CALENDAR HAL library.
7  *
8  ****************************************************************************************
9  * @attention
10   #####Copyright (c) 2019 GOODIX
11   All rights reserved.
12 
13     Redistribution and use in source and binary forms, with or without
14     modification, are permitted provided that the following conditions are met:
15   * Redistributions of source code must retain the above copyright
16     notice, this list of conditions and the following disclaimer.
17   * Redistributions in binary form must reproduce the above copyright
18     notice, this list of conditions and the following disclaimer in the
19     documentation and/or other materials provided with the distribution.
20   * Neither the name of GOODIX nor the names of its contributors may be used
21     to endorse or promote products derived from this software without
22     specific prior written permission.
23 
24   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
28   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
32   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
33   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34   POSSIBILITY OF SUCH DAMAGE.
35  ****************************************************************************************
36  */
37 
38 /** @addtogroup PERIPHERAL Peripheral Driver
39   * @{
40   */
41 
42 /** @addtogroup HAL_DRIVER HAL Driver
43   * @{
44   */
45 
46 /** @defgroup HAL_CALENDAR CALENDAR
47   * @brief CALENDAR HAL module driver.
48   * @{
49   */
50 
51 /* Define to prevent recursive inclusion -------------------------------------*/
52 #ifndef __GR55xx_HAL_CALENDAR_H__
53 #define __GR55xx_HAL_CALENDAR_H__
54 
55 /* Includes ------------------------------------------------------------------*/
56 #include "gr55xx_ll_calendar.h"
57 #include "gr55xx_hal_def.h"
58 
59 #ifdef __cplusplus
60 extern "C" {
61 #endif
62 
63 /* Exported types ------------------------------------------------------------*/
64 /** @addtogroup HAL_CALENDAR_ENUMERATIONS Enumerations
65   * @{
66   */
67 
68 /** @defgroup HAL_CALENDAR_STATE HAL CALENDAR state
69   * @{
70   */
71 /**
72   * @brief HAL CALENDAR State Enumerations definition
73   */
74 typedef enum {
75     HAL_CALENDAR_STATE_RESET             = 0x00,    /**< Peripheral not initialized                            */
76     HAL_CALENDAR_STATE_READY             = 0x01,    /**< Peripheral initialized and ready for use              */
77     HAL_CALENDAR_STATE_ERROR             = 0x04     /**< Peripheral in error                                   */
78 } hal_calender_state_t;
79 
80 /** @} */
81 /** @} */
82 
83 
84 /** @addtogroup HAL_CALENDAR_STRUCTURES Structures
85   * @{
86   */
87 /** @defgroup  CALENDAR_Time CALENDAR Time
88   * @{
89   */
90 
91 /**
92   * @brief  CALENDAR_Time calendar time structure definition
93   */
94 typedef struct _calendar_time {
95     uint8_t sec;                    /**< Specifies the Calendar time seconds.
96                                          This parameter must be a number between min_value = 0 and max_value = 59. */
97 
98     uint8_t min;                    /**< Specifies the Calendar time minutes.
99                                          This parameter must be a number between min_value = 0 and max_value = 59. */
100 
101     uint8_t hour;                   /**< Specifies the Calendar time hour.
102                                          This parameter must be a number between min_value = 0 and max_value = 23. */
103 
104     uint8_t date;                   /**< Specifies the Calendar date.
105                                          This parameter must be a number between min_value = 1 and max_value = 31. */
106 
107     uint8_t mon;                    /**< Specifies the Calendar month.
108                                          This parameter must be a number between min_value = 1 and max_value = 12. */
109 
110     uint8_t year;                   /**< Specifies the Calendar year which stars from 2010.
111                                          This parameter must be a number between min_value = 10 and max_value = 99. */
112 
113     uint8_t week;                   /**< Specifies the Calendar weekday.
114                                          This parameter must be a number between min_value = 0 and max_value = 6.   */
115 
116     uint16_t ms;                    /**< Specifies the Calendar time milliseconds.
117                                          This parameter must be a number between min_value = 0 and max_value = 999. */
118 } calendar_time_t;
119 
120 /**
121   * @brief  CALENDAR_Alarm calendar alarm structure definition
122   */
123 typedef struct _calendar_alarm {
124     uint8_t min;                    /**< Specifies the alarm time minutes.
125                                          This parameter must be a number between min_value = 0 and max_value = 59. */
126 
127     uint8_t hour;                   /**< Specifies the alarm time hour.
128                                          This parameter must be a number between min_value = 0 and max_value = 23. */
129 
130     uint8_t alarm_sel;              /**< Specifies the alarm is on date or weekday.
131                                          This parameter can be a value of @ref CALENDAR_ALARM_SEL. */
132 
133     uint8_t alarm_date_week_mask;   /**< Specifies the alarm date/weekday.
134                                          If the alarm date is selected, this parameter must be set to a value
135                                          in the 1 ~ 31 range.
136                                          If the alarm weekday is selected, this parameter must be a value of
137                                          @ref CALENDAR_ALARM_WEEKDAY. */
138 } calendar_alarm_t;
139 
140 /** @} */
141 
142 /** @defgroup CALENDAR_handle CALENDAR handle
143   * @{
144   */
145 
146 /**
147   * @brief  CALENDAR handle Structure definition
148   */
149 typedef struct _calendar_handle {
150     calendar_time_t     time_init;      /**< Specifies the Calendar inital time. */
151 
152     calendar_alarm_t    alarm;          /**< Specifies the Calendar date alarm. */
153 
154     hal_lock_t          lock;           /**< Specifies the Calendar locking object. */
155 
156     uint32_t            prev_ms;        /**< Accumulated millisecond count .*/
157 
158     uint32_t            interval;       /**< Specifies the Calendar milliseconds alarm. */
159 
160     uint8_t             mode;           /**< Specifies the Calendar alarm mode. */
161 
162     uint8_t             sec;            /**< The seconds for the date alarm. */
163 
164     uint16_t            ms;             /**< The milliseconds for the date alarm. */
165 
166     hal_calender_state_t state;         /**< Calendar state */
167 } calendar_handle_t;
168 
169 /** @} */
170 
171 /** @} */
172 
173 /** @addtogroup HAL_CALENDAR_CALLBACK_STRUCTURES Callback Structures
174   * @{
175   */
176 
177 /** @defgroup HAL_CALENDAR_Callback Callback
178   * @{
179   */
180 
181 /**
182   * @brief HAL_CALENDAR Callback function definition
183   */
184 
185 typedef struct _hal_calendar_callback {
186     void (*calendar_alarm_callback)(calendar_handle_t *p_calendar);     /**< CALENDAR date count complete callback */
187     void (*calendar_tick_callback)(calendar_handle_t *p_calendar);      /**< CALENDAR tick count complete callback */
188     void (*calendar_overflow_callback)(calendar_handle_t *p_calendar);  /**< CALENDAR count overflow callback      */
189 } hal_calendar_callback_t;
190 
191 /** @} */
192 
193 /** @} */
194 
195 /**
196   * @defgroup  HAL_CALENDAR_MACRO Defines
197   * @{
198   */
199 
200 /* Exported constants --------------------------------------------------------*/
201 /** @defgroup CALENDAR_Exported_Constants CALENDAR Exported Constants
202   * @{
203   */
204 
205 /** @defgroup CALENDAR_Interrupts CALENDAR Interrupts
206   * @{
207   */
208 #define CALENDAR_IT_ALARM                   AON_CALENDAR_TIMER_CTL_ALARM_INT_EN /**< Alarm interrupt */
209 #define CALENDAR_IT_WARP                    AON_CALENDAR_TIMER_CTL_WRAP_INT_EN  /**< Warp interrupt  */
210 /** @} */
211 
212 /** @defgroup CALENDAR_Flags CALENDAR Flags
213   * @{
214   */
215 #define CALENDAR_FLAG_ALARM                 AON_SLP_EVENT_CALENDAR_TIMER_ALARM  /**< Alarm interrupt flag  */
216 #define CALENDAR_FLAG_WARP                  AON_SLP_EVENT_CALENDAR_TIMER_WRAP   /**< Warp interrupt flag   */
217 /** @} */
218 
219 /** @defgroup CALENDAR_ALARM_SEL CALENDAR Alarm type select
220   * @{
221   */
222 #define CALENDAR_ALARM_SEL_DATE             (0UL)       /**< Alarm in date    */
223 #define CALENDAR_ALARM_SEL_WEEKDAY          (1UL)       /**< Alarm in weekday */
224 /** @} */
225 
226 /** @defgroup CALENDAR_ALARM_WEEKDAY CALENDAR Alarm weekday
227   * @{
228   */
229 #define CALENDAR_ALARM_WEEKDAY_SUN          (0x01ul)    /**< Alarm weekday mask Sunday    */
230 #define CALENDAR_ALARM_WEEKDAY_MON          (0x02ul)    /**< Alarm weekday mask Monday    */
231 #define CALENDAR_ALARM_WEEKDAY_TUE          (0x04ul)    /**< Alarm weekday mask Tuesday   */
232 #define CALENDAR_ALARM_WEEKDAY_WED          (0x08ul)    /**< Alarm weekday mask Wednesday */
233 #define CALENDAR_ALARM_WEEKDAY_THU          (0x10ul)    /**< Alarm weekday mask Thursday  */
234 #define CALENDAR_ALARM_WEEKDAY_FRI          (0x20ul)    /**< Alarm weekday mask Friday    */
235 #define CALENDAR_ALARM_WEEKDAY_SAT          (0x40ul)    /**< Alarm weekday mask Saturday  */
236 /** @} */
237 
238 /** @defgroup CALENDAR_ALARM_DISABLE CALENDAR Alarm mdoe
239   * @{
240   */
241 #define CALENDAR_ALARM_DISABLE_DATE         (1UL)       /**< Disable date alarm */
242 #define CALENDAR_ALARM_DISABLE_TICK         (2UL)       /**< Disable tick alarm */
243 #define CALENDAR_ALARM_DISABLE_ALL          ((CALENDAR_ALARM_DISABLE_DATE) | \
244                                              CALENDAR_ALARM_DISABLE_TICK)       /**< Disable all alarm */
245 /** @} */
246 
247 /** @} */
248 
249 /* Exported macro ------------------------------------------------------------*/
250 /** @defgroup CALENDAR_Exported_Macros CALENDAR Exported Macros
251   * @{
252   */
253 
254 /** @brief  Enable the specified CALENDAR peripheral.
255   * @retval None
256   */
257 #define __HAL_CALENDAR_ENABLE()                             SET_BITS(AON->CALENDAR_TIMER_CTL, AON_CALENDAR_TIMER_CTL_EN)
258 
259 /** @brief  Disable the specified CALENDAR peripheral.
260   * @retval None
261   */
262 #define __HAL_CALENDAR_DISABLE()                          CLEAR_BITS(AON->CALENDAR_TIMER_CTL, AON_CALENDAR_TIMER_CTL_EN)
263 
264 /** @brief  Enable the specified CALENDAR interrupts.
265   * @param  __INTERRUPT__ Specifies the interrupt source to enable.
266   *         This parameter can be one of the following values:
267   *            @arg @ref CALENDAR_IT_ALARM Alarm Interrupt
268   *            @arg @ref CALENDAR_IT_WARP  Warp Interrupt
269   * @retval None
270   */
271 #define __HAL_CALENDAR_ENABLE_IT(__INTERRUPT__)             SET_BITS(AON->CALENDAR_TIMER_CTL, (__INTERRUPT__))
272 
273 /** @brief  Disable the specified CALENDAR interrupts.
274   * @param  __INTERRUPT__ Specifies the interrupt source to disable.
275   *         This parameter can be one of the following values:
276   *            @arg @ref CALENDAR_IT_ALARM Alarm Interrupt
277   *            @arg @ref CALENDAR_IT_WARP  Warp Interrupt
278   * @retval None
279   */
280 #define __HAL_CALENDAR_DISABLE_IT(__INTERRUPT__)            CLEAR_BITS(AON->CALENDAR_TIMER_CTL, (__INTERRUPT__))
281 
282 /** @brief  Check whether the specified CALENDAR interrupt flag is set or not.
283   * @param  __FLAG__ Specifies the interrupt source to check.
284   *          This parameter can be one of the following values:
285   *            @arg @ref CALENDAR_FLAG_ALARM Alarm Interrupt event
286   *            @arg @ref CALENDAR_FLAG_WARP  Warp Interrupt event
287   * @retval The new state of __IT__ (TRUE or FALSE).
288   */
289 #define __HAL_CALENDAR_GET_IT_SOURCE(__FLAG__)              (READ_BITS(AON->SLP_EVENT, (__FLAG__)) == (__FLAG__))
290 
291 /** @brief  Clear the specified CALENDAR flag.
292   * @param  __FLAG__ Specifies the flag to clear.
293   *         This parameter can be one of the following values:
294   *            @arg @ref CALENDAR_FLAG_ALARM Alarm Interrupt event
295   *            @arg @ref CALENDAR_FLAG_WARP  Warp Interrupt event
296   * @retval None
297   */
298 #define __HAL_CALENDAR_CLEAR_FLAG(__FLAG__)                 WRITE_REG(AON->SLP_EVENT, ~(__FLAG__))
299 
300 /** @} */
301 
302 /* Private macros ------------------------------------------------------------*/
303 /** @defgroup CALENDAR_Private_Macro CALENDAR Private Macros
304   * @{
305   */
306 
307 /** @brief  Check if CALENDAR Alarm Type is valid.
308   * @param  __TYPE__    CALENDAR Alarm Type.
309   * @retval SET (__TYPE__ is valid) or RESET (__TYPE__ is invalid)
310   */
311 #define IS_CALENDAR_ALARM_TYPE(__TYPE__)        (((__TYPE__) == CALENDAR_ALARM_SEL_DATE) || \
312                                                  ((__TYPE__) == CALENDAR_ALARM_SEL_WEEKDAY))
313 
314 /** @brief  Check if CALENDAR Date is valid.
315   * @param  __DATE__    CALENDAR Date.
316   * @retval SET (__DATE__ is valid) or RESET (__DATE__ is invalid)
317   */
318 #define IS_CALENDAR_DATE(__DATE__)              (((__DATE__) >  0) && ((__DATE__) <= 31))
319 
320 /** @brief  Check if CALENDAR Weekday is valid.
321   * @param  __WEEKDAY__    CALENDAR Weekday.
322   * @retval SET (__WEEKDAY__ is valid) or RESET (__WEEKDAY__ is invalid)
323   */
324 #define IS_CALENDAR_WEEKDAY(__WEEKDAY__)        (((__WEEKDAY__) >= 0) && ((__WEEKDAY__) <= 6))
325 
326 /** @brief  Check if CALENDAR year is leap year.
327   * @param  __YEAR__    CALENDAR Year.
328   * @retval SET (__YEAR__ is leap year) or RESET (__YEAR__ is nonleap year)
329   */
330 #define IS_CALENDAR_LEAP_YEAR(__YEAR__)         ((((__YEAR__) % 4) == 0 && ((__YEAR__) % 100) != 0) || \
331                                                  ((__YEAR__) % 400) == 0)
332 
333 /** @} */
334 
335 /** @} */
336 
337 /* Exported functions --------------------------------------------------------*/
338 /** @addtogroup HAL_CALENDAR_DRIVER_FUNCTIONS Functions
339   * @{
340   */
341 
342 /** @addtogroup CALENDAR_Exported_Functions_Group1 Initialization and de-initialization functions
343  *  @brief    Initialization and Configuration functions.
344  *
345 @verbatim
346   ==============================================================================
347           ##### Initialization and Configuration functions #####
348   ==============================================================================
349   [..]
350     This section provides functions allowing to:
351       (+) Initialize and start the CALENDAR according to the specified parameters
352           in the cslendar_init_t of associated handle.
353       (+) Initialize the CALENDAR MSP.
354 
355 @endverbatim
356   * @{
357   */
358 
359 /**
360  ****************************************************************************************
361  * @brief  Initialize the CALENDAR according to the specified parameters in the
362  *         calendar_init_t of  associated handle.
363  *
364  * @param[in]  p_calendar: Pointer to a CALENDAR handle which contains the configuration
365  *               information for the specified CALENDAR module.
366  *
367  * @retval ::HAL_OK: Operation is OK.
368  * @retval ::HAL_ERROR: Parameter error or operation not supported.
369  * @retval ::HAL_BUSY: Driver is busy.
370  * @retval ::HAL_TIMEOUT: Timeout occurred.
371  ****************************************************************************************
372  */
373 hal_status_t hal_calendar_init(calendar_handle_t *p_calendar);
374 
375 /**
376  ****************************************************************************************
377  * @brief De-initialize the CALENDAR peripheral.
378  *
379  * @param[in] p_calendar: CALENDAR handle.
380  *
381  * @retval ::HAL_OK: Operation is OK.
382  * @retval ::HAL_ERROR: Parameter error or operation not supported.
383  * @retval ::HAL_BUSY: Driver is busy.
384  * @retval ::HAL_TIMEOUT: Timeout occurred.
385  ****************************************************************************************
386  */
387 hal_status_t hal_calendar_deinit(calendar_handle_t *p_calendar);
388 
389 /** @} */
390 
391 /** @addtogroup CALENDAR_Exported_Functions_Group2 IO operation functions
392  *  @brief    IO operation functions
393  *
394 @verbatim
395   ==============================================================================
396                       ##### IO operation functions #####
397   ==============================================================================
398   [..]
399     This section provides functions allowing to:
400     (+) Init the CALENDAR time.
401     (+) Get the CALENDAR time.
402     (+) Set the CALENDAR alarm.
403     (+) Disable the CALENDAR alarm.
404     (+) Handle CALENDAR interrupt request and associated function callback.
405 
406 @endverbatim
407   * @{
408   */
409 
410 /**
411  ****************************************************************************************
412  * @brief  Initialize the CALENDAR time.
413  *
414  * @param[in]  p_calendar: Pointer to a CALENDAR handle which contains the configuration
415  *               information for the specified CALENDAR module.
416  * @param[in]  p_time: Pointer to a CALENDAR time struction.
417  *
418  * @retval ::HAL_OK: Operation is OK.
419  * @retval ::HAL_ERROR: Parameter error or operation not supported.
420  * @retval ::HAL_BUSY: Driver is busy.
421  * @retval ::HAL_TIMEOUT: Timeout occurred.
422  ****************************************************************************************
423  */
424 hal_status_t hal_calendar_init_time(calendar_handle_t *p_calendar, calendar_time_t *p_time);
425 
426 /**
427  ****************************************************************************************
428  * @brief  Get current CALENDAR time.
429  *
430  * @param[in]  p_calendar: Pointer to a CALENDAR handle which contains the configuration
431  *               information for the specified CALENDAR module.
432  * @param[in]  p_time: Pointer to a CALENDAR time struction.
433  *
434  * @retval ::HAL_OK: Operation is OK.
435  * @retval ::HAL_ERROR: Parameter error or operation not supported.
436  * @retval ::HAL_BUSY: Driver is busy.
437  * @retval ::HAL_TIMEOUT: Timeout occurred.
438  ****************************************************************************************
439  */
440 hal_status_t hal_calendar_get_time(calendar_handle_t *p_calendar, calendar_time_t *p_time);
441 
442 /**
443  ****************************************************************************************
444  * @brief  Set a CALENDAR date alarm.
445  *
446  * @param[in]  p_calendar: Pointer to a CALENDAR handle which contains the configuration
447  *               information for the specified CALENDAR module.
448  * @param[in]  p_alarm: After seconds will generate an date alarm interrupt.
449  *
450  * @retval ::HAL_OK: Operation is OK.
451  * @retval ::HAL_ERROR: Parameter error or operation not supported.
452  * @retval ::HAL_BUSY: Driver is busy.
453  * @retval ::HAL_TIMEOUT: Timeout occurred.
454  ****************************************************************************************
455  */
456 hal_status_t hal_calendar_set_alarm(calendar_handle_t *p_calendar, calendar_alarm_t *p_alarm);
457 
458 /**
459  ****************************************************************************************
460  * @brief  Set a CALENDAR tick alarm.
461  *
462  * @param[in]  p_calendar: Pointer to a CALENDAR handle which contains the configuration
463  *               information for the specified CALENDAR module.
464  * @param[in]  interval: After milliseconds will generate an milliseconds alarm interrupt.
465  *              The value of interval is greater than or equal to 5ms.(Max: 3600*1000 ms)
466  *
467  * @retval ::HAL_OK: Operation is OK.
468  * @retval ::HAL_ERROR: Parameter error or operation not supported.
469  * @retval ::HAL_BUSY: Driver is busy.
470  * @retval ::HAL_TIMEOUT: Timeout occurred.
471  ****************************************************************************************
472  */
473 hal_status_t hal_calendar_set_tick(calendar_handle_t *p_calendar, uint32_t interval);
474 
475 /**
476  ****************************************************************************************
477  * @brief  Disable CALENDAR alarm event.
478  *
479  * @param[in]  p_calendar: Pointer to a CALENDAR handle which contains the configuration
480  *               information for the specified CALENDAR module.
481  * @param[in]  disable_mode: Disable specified CALENDAR alarm mode.
482  *              This parameter can be the following values:
483  *              @arg @ref CALENDAR_ALARM_DISABLE_DATE
484  *              @arg @ref CALENDAR_ALARM_DISABLE_TICK
485  *              @arg @ref CALENDAR_ALARM_DISABLE_ALL
486  *
487  * @retval ::HAL_OK: Operation is OK.
488  * @retval ::HAL_ERROR: Parameter error or operation not supported.
489  * @retval ::HAL_BUSY: Driver is busy.
490  * @retval ::HAL_TIMEOUT: Timeout occurred.
491  ****************************************************************************************
492  */
493 hal_status_t hal_calendar_disable_event(calendar_handle_t *p_calendar, uint32_t disable_mode);
494 
495 /** @} */
496 
497 
498 /** @addtogroup CALENDAR_IRQ_Handler_and_Callbacks IRQ Handler and Callbacks
499   * @brief    IRQ Handler and Callbacks functions
500  * @{
501  */
502 
503 /**
504  ****************************************************************************************
505  * @brief  Handle CALENDAR interrupt request.
506  *
507  * @note   When alarm is enabled, CALENDAR will generate an interrupt on conter match alarm value.
508  *
509  * @param[in]  p_calendar: Pointer to a CALENDAR handle which contains the configuration
510  *               information for the specified CALENDAR module.
511  ****************************************************************************************
512  */
513 void calendar_irq_handler(calendar_handle_t *p_calendar);
514 
515 /**
516  ****************************************************************************************
517  * @brief  CALENDAR date count complete callback.
518  *
519  * @note   This function should not be modified. when the callback is needed,
520  *         the hal_calendar_alarm_callback can be implemented in the user file.
521  *
522  * @param[in]  p_calendar: Pointer to a CALENDAR handle which contains the configuration
523  *               information for the specified CALENDAR module.
524  ****************************************************************************************
525  */
526 void hal_calendar_alarm_callback(calendar_handle_t *p_calendar);
527 
528 /**
529  ****************************************************************************************
530  * @brief  CALENDAR milliseconds count complete callback.
531  *
532  * @note   This function should not be modified. when the callback is needed,
533  *         the hal_calendar_tick_callback can be implemented in the user file.
534  *
535  * @param[in]  p_calendar: Pointer to a CALENDAR handle which contains the configuration
536  *               information for the specified CALENDAR module.
537  ****************************************************************************************
538  */
539 void hal_calendar_tick_callback(calendar_handle_t *p_calendar);
540 
541 /**
542  ****************************************************************************************
543  * @brief  CALENDAR overflow callback.
544  *
545  * @note   This function should not be modified. when the callback is needed,
546  *         the hal_calendar_overflow_callback can be implemented in the user file.
547  *
548  * @note   The overflow time is about 36 hours.
549  *
550  * @param[in]  p_calendar: Pointer to a CALENDAR handle which contains the configuration
551  *               information for the specified CALENDAR module.
552  ****************************************************************************************
553  */
554 void hal_calendar_overflow_callback(calendar_handle_t *p_calendar);
555 
556 /** @} */
557 
558 /** @} */
559 
560 #ifdef __cplusplus
561 }
562 #endif
563 
564 #endif /* __GR55xx_HAL_CALENDAR_H__ */
565 
566 /** @} */
567 
568 /** @} */
569 
570 /** @} */
571