gr55xx_hal_sleep_timer.h
Go to the documentation of this file.
1 /**
2  ****************************************************************************************
3  *
4  * @file gr55xx_hal_sleep_timer.h
5  * @author BLE Driver Team
6  * @brief Header file containing functions prototypes of sleep timer LL 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_SLP_TIM SLP_TIM
47  * @brief SLEEP TIMER HAL module driver.
48  * @{
49  */
50 
51 /* Define to prevent recursive inclusion -------------------------------------*/
52 #ifndef __GR55xx_HAL_SLEEP_TIMER_H__
53 #define __GR55xx_HAL_SLEEP_TIMER_H__
54 
55 #ifdef __cplusplus
56 extern "C" {
57 #endif
58 
59 /* Includes ------------------------------------------------------------------*/
60 #include "gr55xx_ll_sleep_timer.h"
61 #include "gr55xx_hal_def.h"
62 
63 /* Exported types ------------------------------------------------------------*/
64 
65 /** @addtogroup HAL_SLP_TIM_CALLBACK_STRUCTURES Callback Structures
66  * @{
67  */
68 
69 /** @defgroup SLP_TIM_Callback SLP_TIM Callback
70  * @{
71  */
72 
73 /**
74  * @brief HAL_SLP_TIM Elapsed Callback function definition
75  */
76 typedef void (*pwr_slp_elapsed_handler_t)(void);
77 
78 /**
79  * @brief HAL_SLP_TIM Callback function definition
80  */
81 typedef struct _pwr_handler
82 {
83  pwr_slp_elapsed_handler_t pwr_slp_elapsed_hander; /**< PWR sleep timer elapsed callback */
85 
86 /** @} */
87 
88 /** @} */
89 
90 /**
91  * @defgroup HAL_SLP_TIM_MACRO Defines
92  * @{
93  */
94 
95 /* Exported constants --------------------------------------------------------*/
96 /** @defgroup HAL_SLP_TIM_Exported_Constants SLP TIM Exported Constants
97  * @{
98  */
99 
100 /** @defgroup HAL_SLP_TIM_Timer_Mode PWR Sleep Timer Mode
101  * @{
102  */
103 #define PWR_SLP_TIMER_MODE_NORMAL LL_SLEEP_TIMER_SINGLE_MODE_0 /**< Start counting after sleeping and disabled when waked up */
104 #define PWR_SLP_TIMER_MODE_SINGLE LL_SLEEP_TIMER_SINGLE_MODE_1 /**< Single mode(keep counting until finished) */
105 #define PWR_SLP_TIMER_MODE_RELOAD LL_SLEEP_TIMER_AUTO_MODE /**< Auto reload */
106 /** @} */
107 
108 /** @defgroup HAL_SLP_TIM_TIMER_CLK_SEL Sleep Timer Clock Source
109  * @{
110  */
111 #define SLEEP_TIMER_CLK_SEL_RNG_OSC LL_SLEEP_TIMER_CLK_SEL_RNG_OSC /**< Set Sleep Timer Clock Source as RNG. */
112 #define SLEEP_TIMER_CLK_SEL_XO LL_SLEEP_TIMER_CLK_SEL_XO /**< Set Sleep Timer Clock Source as XO. */
113 #define SLEEP_TIMER_CLK_SEL_RNG2_OSC LL_SLEEP_TIMER_CLK_SEL_RNG2_OSC /**< Set Sleep Timer Clock Source as RNG2. */
114 #define SLEEP_TIMER_CLK_SEL_RTC_OSC LL_SLEEP_TIMER_CLK_SEL_RTC_OSC /**< Set Sleep Timer Clock Source as RTC. */
115 /** @} */
116 
117 /** @} */
118 /** @} */
119 
120 /* Exported functions --------------------------------------------------------*/
121 /** @addtogroup HAL_SLP_TIM_DRIVER_FUNCTIONS Functions
122  * @{
123  */
124 
125 /** @addtogroup HAL_SLP_TIM_Exported_Functions_Group1 Low Power mode configuration functions
126  * @{
127  */
128 
129 /**
130 ****************************************************************************************
131 * @brief Configure the AON Sleep Timer mode, count and start used to wakeup MCU.
132 * @param[in] mode: Specifies the sleep timer mode.
133 * This parameter can be a combination of the following values:
134 * @arg @ref PWR_SLP_TIMER_MODE_NORMAL
135 * @arg @ref PWR_SLP_TIMER_MODE_SINGLE
136 * @arg @ref PWR_SLP_TIMER_MODE_RELOAD
137 * @param[in] value: Count value of the AON Sleep Timer.
138 * @retval ::HAL_OK: Operation is OK.
139 * @retval ::HAL_BUSY: Driver is busy.
140 * @note The sleep clock of AON Timer is 32 KHz.
141 ****************************************************************************************
142 */
143 hal_status_t hal_sleep_timer_config_and_start(uint8_t mode, uint32_t value);
144 
145 /**
146 ****************************************************************************************
147 * @brief stop Sleep Timer
148 ****************************************************************************************
149 */
151 
152 /**
153 ****************************************************************************************
154 * @brief Get the reload value of sleep timer
155 * @retval the reload value of sleep timer
156 ****************************************************************************************
157 */
159 
160 /**
161 ****************************************************************************************
162 * @brief Get the current value of sleep timer
163 * @retval the current value of sleep timer
164 ****************************************************************************************
165 */
167 
168 /**
169 ****************************************************************************************
170 * @brief Get clock frequency of sleep timer
171 * @retval clock frequency of sleep timer
172 ****************************************************************************************
173 */
175 
176 
177 /**
178 ****************************************************************************************
179 * @brief Set the clock source of sleep timer
180 * @param[in] clock_src: value This parameter can be a one of the following values:
181 * @arg @ref SLEEP_TIMER_CLK_SEL_RNG_OSC
182 * @arg @ref SLEEP_TIMER_CLK_SEL_XO
183 * @arg @ref SLEEP_TIMER_CLK_SEL_RNG2_OSC
184 * @arg @ref SLEEP_TIMER_CLK_SEL_RTC_OSC
185 ****************************************************************************************
186 */
187 void hal_sleep_timer_clock_set(uint32_t clock_src);
188 
189 /**
190 ****************************************************************************************
191 * @brief get sleep timer is running or not
192 * @retval runing state of sleep timer (1 or 0).
193 ****************************************************************************************
194 */
196 /** @} */
197 
198 /** @addtogroup PWR_IRQ_Handler_and_Callbacks IRQ Handler and Callbacks
199  * @brief IRQ Handler and Callbacks functions
200  * @{
201  */
202 /**
203  ****************************************************************************************
204  * @brief Handle PWR Sleep Timer interrupt request.
205  * @note Only available on GR551xx_B2 and later versions.
206  ****************************************************************************************
207  */
209 
210 /**
211  ****************************************************************************************
212  * @brief PWR Sleep Timer Elapsed callback.
213  * @note Only available on GR551xx_B2 and later versions.
214  * This function should not be modified. When the callback is needed,
215  * the hal_pwr_sleep_timer_elapsed_callback can be implemented in the user file.
216  ****************************************************************************************
217  */
219 
220 /** @} */
221 /** @} */
222 
223 #ifdef __cplusplus
224 }
225 #endif
226 
227 #endif /* __GR55xx_HAL_SLEEP_TIMER_H__ */
228 
229 /** @} */
230 
231 /** @} */
232 
233 /** @} */
hal_sleep_timer_config_and_start
hal_status_t hal_sleep_timer_config_and_start(uint8_t mode, uint32_t value)
Configure the AON Sleep Timer mode, count and start used to wakeup MCU.
hal_pwr_sleep_timer_elapsed_callback
void hal_pwr_sleep_timer_elapsed_callback(void)
PWR Sleep Timer Elapsed callback.
hal_sleep_timer_get_clock_freq
uint32_t hal_sleep_timer_get_clock_freq(void)
Get clock frequency of sleep timer.
hal_sleep_timer_get_current_value
uint32_t hal_sleep_timer_get_current_value(void)
Get the current value of sleep timer.
hal_pwr_sleep_timer_irq_handler
void hal_pwr_sleep_timer_irq_handler(void)
Handle PWR Sleep Timer interrupt request.
hal_sleep_timer_get_reload_value
uint32_t hal_sleep_timer_get_reload_value(void)
Get the reload value of sleep timer.
_pwr_handler
HAL_SLP_TIM Callback function definition.
Definition: gr55xx_hal_sleep_timer.h:82
pwr_handler_t
struct _pwr_handler pwr_handler_t
HAL_SLP_TIM Callback function definition.
hal_sleep_timer_stop
void hal_sleep_timer_stop(void)
stop Sleep Timer
gr55xx_ll_sleep_timer.h
Header file containing functions prototypes of sleep timer LL library.
pwr_slp_elapsed_handler_t
void(* pwr_slp_elapsed_handler_t)(void)
HAL_SLP_TIM Elapsed Callback function definition.
Definition: gr55xx_hal_sleep_timer.h:76
hal_status_t
hal_status_t
HAL Status structures definition.
Definition: gr55xx_hal_def.h:70
hal_sleep_timer_status_get
uint8_t hal_sleep_timer_status_get(void)
get sleep timer is running or not
_pwr_handler::pwr_slp_elapsed_hander
pwr_slp_elapsed_handler_t pwr_slp_elapsed_hander
Definition: gr55xx_hal_sleep_timer.h:83
hal_sleep_timer_clock_set
void hal_sleep_timer_clock_set(uint32_t clock_src)
Set the clock source of sleep timer.
gr55xx_hal_def.h
This file contains HAL common definitions, enumeration, macros and structures definitions.