• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  ****************************************************************************************
3  *
4  * @file gr55xx_hal_pwr.h
5  * @author  BLE Driver Team
6  * @brief   Header file containing functions prototypes of PWR 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_PWR PWR
47   * @brief PWR HAL module driver.
48   * @{
49   */
50 
51 /* Define to prevent recursive inclusion -------------------------------------*/
52 #ifndef __GR55xx_HAL_PWR_H__
53 #define __GR55xx_HAL_PWR_H__
54 
55 /* Includes ------------------------------------------------------------------*/
56 #include "gr55xx_ll_pwr.h"
57 #include "gr55xx_hal_def.h"
58 
59 #ifdef __cplusplus
60 extern "C" {
61 #endif
62 
63 /* Exported types ------------------------------------------------------------*/
64 
65 /** @addtogroup HAL_PWR_CALLBACK_STRUCTURES Callback Structures
66   * @{
67   */
68 
69 /** @defgroup HAL_PWR_SLEEP_ELAPSED_HANDLER HAL PWR sleep elapsed handler define
70   * @{
71   */
72 
73 /**
74   * @brief   PWR Sleep Timer Elapsed callback
75   */
76 
77 typedef void (*pwr_slp_elapsed_handler_t)(void);
78 
79 /** @} */
80 
81 /** @defgroup HAL_PWR_CALLBACK_HANDLER PWR callback handle
82   * @{
83   */
84 
85 /**
86   * @brief PWR callback handle Structure definition
87   */
88 typedef struct _hal_pwr_handler {
89     pwr_slp_elapsed_handler_t       pwr_slp_elapsed_hander;     /**< PWR sleep timer elapsed callback */
90 } hal_pwr_handler_t;
91 
92 /** @} */
93 
94 /** @} */
95 
96 /**
97   * @defgroup  HAL_PWR_MACRO Defines
98   * @{
99   */
100 
101 /* Exported constants --------------------------------------------------------*/
102 /** @defgroup PWR_Exported_Constants PWR Exported Constants
103   * @{
104   */
105 
106 /** @defgroup PWR_WakeUp_Pins PWR WakeUp Pins
107   * @{
108   */
109 #define PWR_EXTWKUP_PIN0                LL_PWR_EXTWKUP_PIN0             /**< External wakeup pin 0 */
110 #define PWR_EXTWKUP_PIN1                LL_PWR_EXTWKUP_PIN1             /**< External wakeup pin 1 */
111 #define PWR_EXTWKUP_PIN2                LL_PWR_EXTWKUP_PIN2             /**< External wakeup pin 2 */
112 #define PWR_EXTWKUP_PIN3                LL_PWR_EXTWKUP_PIN3             /**< External wakeup pin 3 */
113 #define PWR_EXTWKUP_PIN4                LL_PWR_EXTWKUP_PIN4             /**< External wakeup pin 4 */
114 #define PWR_EXTWKUP_PIN5                LL_PWR_EXTWKUP_PIN5             /**< External wakeup pin 5 */
115 #define PWR_EXTWKUP_PIN6                LL_PWR_EXTWKUP_PIN6             /**< External wakeup pin 6 */
116 #define PWR_EXTWKUP_PIN7                LL_PWR_EXTWKUP_PIN7             /**< External wakeup pin 7 */
117 #define PWR_EXTWKUP_PIN_ALL             LL_PWR_EXTWKUP_PIN_ALL          /**< External wakeup pin 0 ~ 7 */
118 /** @} */
119 
120 /** @defgroup PWR_WakeUp_Conditions  PWR Wakeup Condition
121   * @{
122   */
123 #define PWR_WKUP_COND_EXT               LL_PWR_WKUP_COND_EXT             /**< External wakeup: AON_GPIO   */
124 #define PWR_WKUP_COND_TIMER             LL_PWR_WKUP_COND_TIMER           /**< AON Timer wakeup            */
125 #define PWR_WKUP_COND_BLE               LL_PWR_WKUP_COND_BLE             /**< BLE wakeup                  */
126 #define PWR_WKUP_COND_CALENDAR          LL_PWR_WKUP_COND_CALENDAR        /**< Calendar wakeup             */
127 #define PWR_WKUP_COND_BOD_FEDGE         LL_PWR_WKUP_COND_BOD_FEDGE       /**< PMU Bod falling edge wakeup */
128 #define PWR_WKUP_COND_MSIO_COMP         LL_PWR_WKUP_COND_MSIO_COMP       /**< Msio comparator wakeup      */
129 #define PWR_WKUP_COND_ALL               LL_PWR_WKUP_COND_ALL             /**< All wakeup sources mask     */
130 
131 /** @} */
132 
133 /** @defgroup PWR_External_WakeUp_Type  PWR External Wakeup Type
134   * @{
135   */
136 #define PWR_EXTWKUP_TYPE_LOW            LL_PWR_EXTWKUP_TYPE_LOW         /**< Low level wakeup */
137 #define PWR_EXTWKUP_TYPE_HIGH           LL_PWR_EXTWKUP_TYPE_HIGH        /**< High level wakeup */
138 #define PWR_EXTWKUP_TYPE_RISING         LL_PWR_EXTWKUP_TYPE_RISING      /**< Rising edge wakeup */
139 #define PWR_EXTWKUP_TYPE_FALLING        LL_PWR_EXTWKUP_TYPE_FALLING     /**< Falling edge wakeup */
140 /** @} */
141 
142 /** @defgroup PWR_Sleep_Timer_Mode  PWR Sleep Timer Mode
143  * @{
144  */
145 #define PWR_SLP_TIMER_MODE_NORMAL       0x0U    /**< Start counting after sleeping and disabled when waked up */
146 #define PWR_SLP_TIMER_MODE_SINGLE       0x1U    /**< Single mode(keep counting until finished) */
147 #define PWR_SLP_TIMER_MODE_RELOAD       0x2U    /**< Auto reload  */
148 #define PWR_SLP_TIMER_MODE_DISABLE      0x3U    /**< Disabled (used for reset mode) */
149 /** @} */
150 
151 /** @defgroup PWR_Timer_Type  PWR Timer Type
152  *  @note     Only available on GR5515_C and later versions.
153  *  @{
154  */
155 #define PWR_TIMER_TYPE_CAL_TIMER        LL_PWR_TIMER_READ_SEL_CAL_TIMER  /**< Calendar timer     */
156 #define PWR_TIMER_TYPE_AON_WDT          LL_PWR_TIMER_READ_SEL_AON_WDT    /**< AON watchdog timer */
157 #define PWR_TIMER_TYPE_SLP_TIMER        LL_PWR_TIMER_READ_SEL_SLP_TIMER  /**< Sleep timer        */
158 #define PWR_TIMER_TYPE_CAL_ALARM        LL_PWR_TIMER_READ_SEL_CAL_ALARM  /**< Calendar timer     */
159 /** @} */
160 
161 
162 /** @defgroup PWR_Memory_Power_State  Memory Power State
163  * @{
164  */
165 #define PWR_MEM_POWER_OFF               LL_PWR_MEM_POWER_OFF            /**< Power off */
166 #define PWR_MEM_POWER_FULL              LL_PWR_MEM_POWER_FULL           /**< Full power */
167 #define PWR_MEM_POWER_RETENTION         LL_PWR_MEM_POWER_RETENTION      /**< Power retention, low valtage mode */
168 /** @} */
169 
170 /** @defgroup PWR_Communication_Power_State  Communication Power State
171  * @{
172  */
173 #define PWR_COMM_TIMER_POWER_DOWN       0x0U  /**< Power down communication timer */
174 #define PWR_COMM_TIMER_POWER_UP         0x1U  /**< Power on  communication timer */
175 #define PWR_COMM_CORE_POWER_DOWN        0x0U  /**< Power down communication core */
176 #define PWR_COMM_CORE_POWER_UP          0x1U  /**< Power on  communication core */
177 /** @} */
178 
179 /** @defgroup PWR_Communication_Mode  Communication Mode
180  * @{
181  */
182 #define PWR_COMM_TIMER_MODE_RESET       0x0U  /**< Communication timer in reset mode */
183 #define PWR_COMM_TIMER_MODE_RUNNING     0x1U  /**< Communication timer in running mode */
184 #define PWR_COMM_CORE_MODE_RESET        0x0U  /**< Communication core in reset mode */
185 #define PWR_COMM_CORE_MODE_RUNNING      0x1U  /**< Communication core in running mode */
186 /** @} */
187 
188 /** @defgroup PWR_Timeout_definition PWR Timeout definition
189  * @{
190   */
191 #define HAL_PWR_TIMEOUT_DEFAULT_VALUE ((uint32_t)0x000FFFFF)         /**< 0xFFFFF counts */
192 /** @} */
193 
194 /** @} */
195 
196 /* Exported macro ------------------------------------------------------------*/
197 /* Private macros ------------------------------------------------------------*/
198 /** @addtogroup  PWR_Private_Macros   PWR Private Macros
199   * @{
200   */
201 
202 /**
203   * @brief Check if PWR wakeup condition is valid.
204   * @param __COND__ PWR wakeup condition.
205   * @retval SET (__COND__ is valid) or RESET (__COND__ is invalid)
206   */
207 #define IS_PWR_WAKEUP_CONDITION(__COND__)       ((((__COND__) & PWR_WKUP_COND_ALL) != 0x00U) && \
208                                                  (((__COND__) & ~PWR_WKUP_COND_ALL) == 0x00U))
209 
210 /**
211   * @brief Check if PWR external wakeup pin is valid.
212   * @param __PIN__ PWR external wakeup pin.
213   * @retval SET (__PIN__ is valid) or RESET (__PIN__ is invalid)
214   */
215 #define IS_PWR_EXT_WAKEUP_PIN(__PIN__)          ((((__PIN__) & PWR_EXTWKUP_PIN_ALL) != 0x00U) && \
216                                                  (((__PIN__) & ~PWR_EXTWKUP_PIN_ALL) == 0x00U))
217 
218 /**
219   * @brief Check if PWR sleep timer mode is valid.
220   * @param __MODE__ PWR sleep timer mode.
221   * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid)
222   */
223 #define IS_PWR_SLP_TIMER_MODE(__MODE__)         (((__MODE__) == PWR_SLP_TIMER_MODE_NORMAL) || \
224                                                  ((__MODE__) == PWR_SLP_TIMER_MODE_SINGLE) || \
225                                                  ((__MODE__) == PWR_SLP_TIMER_MODE_RELOAD) || \
226                                                  ((__MODE__) == PWR_SLP_TIMER_MODE_DISABLE))
227 
228 /**
229   * @brief Check if PWR external wakeup type is valid.
230   * @param __TYPE__ PWR external wakeup type.
231   * @retval SET (__TYPE__ is valid) or RESET (__TYPE__ is invalid)
232   */
233 #define IS_PWR_EXTWKUP_TYPE(__TYPE__)           (((__TYPE__) == PWR_EXTWKUP_TYPE_LOW)    || \
234                                                  ((__TYPE__) == PWR_EXTWKUP_TYPE_HIGH)   || \
235                                                  ((__TYPE__) == PWR_EXTWKUP_TYPE_RISING) || \
236                                                  ((__TYPE__) == PWR_EXTWKUP_TYPE_FALLING))
237 
238 /**
239   * @brief Check if PWR memory block is valid.
240   * @param __BLOCK__ PWR memory block.
241   * @retval SET (__BLOCK__ is valid) or RESET (__BLOCK__ is invalid)
242   */
243 #define IS_PWR_MEM_BLOCK(__BLOCK__)             ((((__BLOCK__) & PWR_MEM_ALL) != 0x00U) && \
244                                                  (((__BLOCK__) & ~PWR_MEM_ALL) == 0x00U))
245 
246 /**
247   * @brief Check if PWR memory power state is valid.
248   * @param __STATE__ PWR memory power state.
249   * @retval SET (__STATE__ is valid) or RESET (__STATE__ is invalid)
250   */
251 #define IS_PWR_MEM_POWER_STAT(__STATE__)        (((__STATE__) == PWR_MEM_POWER_OFF)  || \
252                                                  ((__STATE__) == PWR_MEM_POWER_FULL) || \
253                                                  ((__STATE__) == PWR_MEM_POWER_RETENTION))
254 
255 /**
256   * @brief Check if PWR BLE communication timer power state is valid.
257   * @param __STATE__ PWR BLE communication timer power state.
258   * @retval SET (__STATE__ is valid) or RESET (__STATE__ is invalid)
259   */
260 #define IS_PWR_COMM_TIMER_POWER_STAT(__STATE__) (((__STATE__) == PWR_COMM_TIMER_POWER_DOWN) || \
261                                                  ((__STATE__) == PWR_COMM_TIMER_POWER_UP))
262 
263 /**
264   * @brief Check if PWR BLE communication core power state is valid.
265   * @param __STATE__ PWR BLE communication core power state.
266   * @retval SET (__STATE__ is valid) or RESET (__STATE__ is invalid)
267   */
268 #define IS_PWR_COMM_CORE_POWER_STAT(__STATE__)  (((__STATE__) == PWR_COMM_CORE_POWER_DOWN) || \
269                                                  ((__STATE__) == PWR_COMM_CORE_POWER_UP))
270 
271 /**
272   * @brief Check if PWR BLE communication timer mode is valid.
273   * @param __MODE__ PWR BLE communication timer mode.
274   * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid)
275   */
276 #define IS_PWR_COMM_TIMER_MODE(__MODE__)        (((__MODE__) == PWR_COMM_TIMER_MODE_RESET) || \
277                                                  ((__MODE__) == PWR_COMM_TIMER_MODE_RUNNING))
278 
279 /**
280   * @brief Check if PWR BLE communication core mode is valid.
281   * @param __MODE__ PWR BLE communication core mode.
282   * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid)
283   */
284 #define IS_PWR_COMM_CORE_MODE(__MODE__)         (((__MODE__) == PWR_COMM_CORE_MODE_RESET) || \
285                                                  ((__MODE__) == PWR_COMM_CORE_MODE_RUNNING))
286 
287 /**
288   * @brief Check if PWR sleep timer type is valid.
289   * @param __TYPE__ PWR sleep timer type.
290   * @retval SET (__TYPE__ is valid) or RESET (__TYPE__ is invalid)
291   */
292 #define IS_PWR_PWR_TIMER_TYPE(__TYPE__)         (((__TYPE__) == PWR_TIMER_TYPE_CAL_TIMER) || \
293                                                  ((__TYPE__) == PWR_TIMER_TYPE_AON_WDT)   || \
294                                                  ((__TYPE__) == PWR_TIMER_TYPE_SLP_TIMER) || \
295                                                  ((__TYPE__) == PWR_TIMER_TYPE_CAL_ALARM))
296 
297 /** @} */
298 
299 /** @} */
300 
301 /* Exported functions --------------------------------------------------------*/
302 /** @addtogroup HAL_PWR_DRIVER_FUNCTIONS Functions
303   * @{
304   */
305 
306 /** @addtogroup PWR_Exported_Functions_Group1 Low Power mode configuration functions
307   * @{
308   */
309 
310 /**
311  ****************************************************************************************
312  * @brief  Set the DeepSleep WakeUp Condition
313  * @param[in]  condition: This parameter can be a combination of the following values:
314  *         @arg @ref PWR_WKUP_COND_EXT
315  *         @arg @ref PWR_WKUP_COND_TIMER
316  *         @arg @ref PWR_WKUP_COND_BLE
317  *         @arg @ref PWR_WKUP_COND_CALENDAR
318  *         @arg @ref PWR_WKUP_COND_BOD_FEDGE
319  *         @arg @ref PWR_WKUP_COND_MSIO_COMP
320  *         @arg @ref PWR_WKUP_COND_ALL
321  * @note   When @ref PWR_WKUP_COND_EXT is set, use @ref hal_pwr_config_ext_wakeup() to
322  *         configure wakeup pins and pin trigger type.
323  *         When @ref PWR_WKUP_COND_TIMER is set, use @ref hal_pwr_config_timer_wakeup()
324  *         to configure the time count to wakeup.
325  *         When @ref PWR_WKUP_COND_ALL is set, use @ref hal_pwr_config_ext_wakeup() and
326  *         @ref hal_pwr_config_timer_wakeup() to configure
327  *         AON timer and External AON GPIO.
328  ****************************************************************************************
329  */
330 void hal_pwr_set_wakeup_condition(uint32_t condition);
331 
332 /**
333  ****************************************************************************************
334  * @brief  Configure the AON Sleep Timer mode and count used to wakeup MCU.
335  * @param[in]  timer_mode: Specifies the sleep timer mode.
336  *         This parameter can be a combination of the following values:
337  *         @arg @ref PWR_SLP_TIMER_MODE_NORMAL
338  *         @arg @ref PWR_SLP_TIMER_MODE_SINGLE
339  *         @arg @ref PWR_SLP_TIMER_MODE_RELOAD
340  *         @arg @ref PWR_SLP_TIMER_MODE_DISABLE
341  * @param[in]  load_count: Count value of the AON Sleep Timer.
342  * @note   The sleep clock of AON Timer is 32 KHz.
343  ****************************************************************************************
344  */
345 void hal_pwr_config_timer_wakeup(uint8_t timer_mode, uint32_t load_count);
346 
347 /**
348  ****************************************************************************************
349  * @brief  Configure the External AON GPIO pins and pin trigger type that is used to wakeup MCU.
350  * @param[in]  ext_wakeup_pinx: This parameter can be a combination of the following values:
351  *         @arg @ref PWR_EXTWKUP_PIN0
352  *         @arg @ref PWR_EXTWKUP_PIN1
353  *         @arg @ref PWR_EXTWKUP_PIN2
354  *         @arg @ref PWR_EXTWKUP_PIN3
355  *         @arg @ref PWR_EXTWKUP_PIN4
356  *         @arg @ref PWR_EXTWKUP_PIN5
357  *         @arg @ref PWR_EXTWKUP_PIN_ALL
358  * @param[in]  ext_wakeup_type: This parameter can be a combination of the following values:
359  *         @arg @ref PWR_EXTWKUP_TYPE_LOW
360  *         @arg @ref PWR_EXTWKUP_TYPE_HIGH
361  *         @arg @ref PWR_EXTWKUP_TYPE_RISING
362  *         @arg @ref PWR_EXTWKUP_TYPE_FALLING
363  * @note   When the level of any selected GPIO pin changes in accordance with the set
364  *         trigger type, MCU will be waked up from DeepSleep mode.
365  ****************************************************************************************
366  */
367 void hal_pwr_config_ext_wakeup(uint32_t ext_wakeup_pinx, uint32_t ext_wakeup_type);
368 
369 /**
370  ****************************************************************************************
371  * @brief  Disable the interrupt wake-up function of the specified AON GPIO pin.
372  * @param[in]  disable_wakeup_pinx: This parameter can be a combination of the following values:
373  *         @arg @ref PWR_EXTWKUP_PIN0
374  *         @arg @ref PWR_EXTWKUP_PIN1
375  *         @arg @ref PWR_EXTWKUP_PIN2
376  *         @arg @ref PWR_EXTWKUP_PIN3
377  *         @arg @ref PWR_EXTWKUP_PIN4
378  *         @arg @ref PWR_EXTWKUP_PIN5
379  *         @arg @ref PWR_EXTWKUP_PIN_ALL
380  ****************************************************************************************
381  */
382 void hal_pwr_disable_ext_wakeup(uint32_t disable_wakeup_pinx);
383 
384 /**
385  ****************************************************************************************
386  * @brief Enters DeepSleep mode.
387  * @note  In DeepSleep mode, all I/O pins keep the same state as in Run mode.
388  ****************************************************************************************
389 */
390 void hal_pwr_enter_chip_deepsleep(void);
391 
392 /** @} */
393 
394 /** @addtogroup PWR_Exported_Functions_Group2 BLE Communication timer and core configuration function
395   * @{
396   */
397 
398 /**
399  ****************************************************************************************
400  * @brief  Set the power state of communication timer and communication core in running mode.
401  * @param[in]  timer_power_state: This parameter can be one of the following values:
402  *         @arg @ref PWR_COMM_TIMER_POWER_UP
403  *         @arg @ref PWR_COMM_TIMER_POWER_DOWN
404  * @param[in]  core_power_state: This parameter can be one of the following values:
405  *         @arg @ref PWR_COMM_CORE_POWER_UP
406  *         @arg @ref PWR_COMM_CORE_POWER_DOWN
407  ****************************************************************************************
408  */
409 void hal_pwr_set_comm_power(uint32_t timer_power_state, uint32_t core_power_state);
410 
411 /**
412  ****************************************************************************************
413  * @brief  Set the work mode of communication timer and communication core.
414  * @param[in]  timer_mode: This parameter can be one of the following values:
415  *         @arg @ref PWR_COMM_TIMER_MODE_RESET
416  *         @arg @ref PWR_COMM_TIMER_MODE_RUNNING
417  * @param[in]  core_mode: This parameter can be one of the following values:
418  *         @arg @ref PWR_COMM_CORE_MODE_RESET
419  *         @arg @ref PWR_COMM_CORE_MODE_RUNNING
420  ****************************************************************************************
421  */
422 void hal_pwr_set_comm_mode(uint32_t timer_mode, uint32_t core_mode);
423 
424 /**
425  ****************************************************************************************
426  * @brief  Get the current value of specified timer.
427  * @note   Only available on GR5515_C and later versions.
428  * @param[in]  timer_type: This parameter can be one of the following values:
429  *         @arg @ref PWR_TIMER_TYPE_CAL_TIMER
430  *         @arg @ref PWR_TIMER_TYPE_AON_WDT
431  *         @arg @ref PWR_TIMER_TYPE_SLP_TIMER
432  *         @arg @ref PWR_TIMER_TYPE_CAL_ALARM
433  * @param[out] p_value: Pointer to an integer storing current value
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_pwr_get_timer_current_value(uint32_t timer_type, uint32_t *p_value);
441 
442 /** @} */
443 
444 /** @addtogroup PWR_IRQ_Handler_and_Callbacks IRQ Handler and Callbacks
445   * @brief    IRQ Handler and Callbacks functions
446  * @{
447  */
448 
449 /**
450  ****************************************************************************************
451  * @brief  Handle PWR Sleep Timer interrupt request.
452  * @note   Only available on GR5515_C and later versions.
453  ****************************************************************************************
454  */
455 void hal_pwr_sleep_timer_irq_handler(void);
456 
457 /**
458  ****************************************************************************************
459  * @brief  PWR Sleep Timer Elapsed callback.
460  * @note   Only available on GR5515_C and later versions.
461  *         This function should not be modified. When the callback is needed,
462  *         the hal_pwr_sleep_timer_elapsed_callback can be implemented in the user file.
463  ****************************************************************************************
464  */
465 void hal_pwr_sleep_timer_elapsed_callback(void);
466 
467 /** @} */
468 
469 /** @} */
470 
471 #ifdef __cplusplus
472 }
473 #endif
474 
475 #endif /* __GR55xx_HAL_PWR_H__ */
476 
477 /** @} */
478 
479 /** @} */
480 
481 /** @} */
482