hal_sleep_timer.h
Go to the documentation of this file.
1 /**
2 ****************************************************************************************
3 *
4 * @file 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 LL_DRIVER LL Driver
43 * @{
44 */
45
46 /** @defgroup LL_SLP_TIM SLP_TIM
47 * @brief SLEEP TIMER HAL module driver.
48 * @{
49 */
50
51 /* Define to prevent recursive inclusion -------------------------------------*/
52 #ifndef ___HAL_SLEEP_TIMER_H__
53 #define ___HAL_SLEEP_TIMER_H__
54
55 #ifdef __cplusplus
56 extern "C" {
57 #endif
58
59 /* Includes ------------------------------------------------------------------*/
60 #include "ll_sleep_timer.h"
61 #include "hal_def.h"
62
63 /* Exported types ------------------------------------------------------------*/
64
65 /** @addtogroup HAL_PWR_CALLBACK_STRUCTURES Callback Structures
66 * @{
67 */
68 /** @defgroup HAL_PWR_SLEEP_ELAPSED_HANDLER HAL PWR sleep elapsed handler define
69 * @{
70 */
71
72 /**
73 * @brief PWR Sleep Timer Elapsed callback
74 */
75 typedef void (*pwr_slp_elapsed_handler_t)(void);
76
77 /** @} */
78
79
80 /** @defgroup HAL_PWR_CALLBACK_HANDLER PWR callback handle
81 * @{
82 */
83 /**
84 * @brief PWR callback handle Structure definition
85 */
86 typedef struct _pwr_handler
87 {
88 pwr_slp_elapsed_handler_t pwr_slp_elapsed_hander; /**< PWR sleep timer elapsed callback */
89 } pwr_handler_t;
90
91 /** @} */
92 /** @} */
93
94 /**
95 * @defgroup HAL_PWR_MACRO Defines
96 * @{
97 */
98
99 /* Exported constants --------------------------------------------------------*/
100 /** @defgroup PWR_Exported_Constants PWR Exported Constants
101 * @{
102 */
103
104 /** @defgroup PWR_Sleep_Timer_Mode PWR Sleep Timer Mode
105 * @{
106 */
107 #define PWR_SLP_TIMER_MODE_NORMAL LL_SLEEP_TIMER_SINGLE_MODE_0 /**< Start counting after sleeping and disabled when waked up */
108 #define PWR_SLP_TIMER_MODE_SINGLE LL_SLEEP_TIMER_SINGLE_MODE_1 /**< Single mode(keep counting until finished) */
109 #define PWR_SLP_TIMER_MODE_RELOAD LL_SLEEP_TIMER_AUTO_MODE /**< Auto reload */
110 /** @} */
111
112 /** @defgroup PWR_Timeout_definition PWR Timeout definition
113 * @{
114 */
115 #define HAL_PWR_TIMEOUT_DEFAULT_VALUE ((uint32_t)0x000FFFFF) /**< 0xFFFFF counts */
116 /** @} */
117
118 /** @defgroup Sleep_Timer_Overflow Overflow value definition
119 * @{
120 */
121 #define HAL_SLP_TIMER_OVERFLOW_VALUE (0xFFFFFFFFU) /**< After counting to 0, the count value rolls over to 0xFFFFFFFF */
122 /** @} */
123
124 /** @} */
125 /** @} */
126
127 /* Exported functions --------------------------------------------------------*/
128 /** @addtogroup HAL_PWR_DRIVER_FUNCTIONS Functions
129 * @{
130 */
131
132 /** @addtogroup PWR_Exported_Functions_Group1 Low Power mode configuration functions
133 * @{
134 */
135
136 /**
137 ****************************************************************************************
138 * @brief Configure the AON Sleep Timer mode, count and start used to wakeup MCU.
139 * @param[in] mode: Specifies the sleep timer mode.
140 * This parameter can be a combination of the following values:
141 * @arg @ref PWR_SLP_TIMER_MODE_NORMAL
142 * @arg @ref PWR_SLP_TIMER_MODE_SINGLE
143 * @arg @ref PWR_SLP_TIMER_MODE_RELOAD
144 * @param[in] value: Count value of the AON Sleep Timer.
145 * @retval ::HAL_OK: Operation is OK.
146 * @retval ::HAL_BUSY: Driver is busy.
147 * @note The sleep clock of AON Timer is 32 KHz.
148 ****************************************************************************************
149 */
150 hal_status_t hal_sleep_timer_config_and_start(uint8_t mode, uint32_t value);
151
152 /**
153 ****************************************************************************************
154 * @brief stop Sleep Timer
155 ****************************************************************************************
156 */
157 void hal_sleep_timer_stop(void);
158
159 /**
160 ****************************************************************************************
161 * @brief Get the reload value of sleep timer
162 * @retval the reload value of sleep timer
163 ****************************************************************************************
164 */
165 uint32_t hal_sleep_timer_get_reload_value(void);
166
167 /**
168 ****************************************************************************************
169 * @brief Get the current value of sleep timer
170 * @retval the current value of sleep timer
171 ****************************************************************************************
172 */
173 uint32_t hal_sleep_timer_get_current_value(void);
174
175 /**
176 ****************************************************************************************
177 * @brief Get clock frequency of sleep timer
178 * @retval clock frequency of sleep timer
179 ****************************************************************************************
180 */
181 uint32_t hal_sleep_timer_get_clock_freq(void);
182
183 /**
184 ****************************************************************************************
185 * @brief get sleep timer is running or not
186 * @retval running state of sleep timer (1 or 0).
187 ****************************************************************************************
188 */
189 uint32_t hal_sleep_timer_status_get(void);
190 /** @} */
191
192 /** @addtogroup PWR_IRQ_Handler_and_Callbacks IRQ Handler and Callbacks
193 * @brief IRQ Handler and Callbacks functions
194 * @{
195 */
196 /**
197 ****************************************************************************************
198 * @brief Handle PWR Sleep Timer interrupt request.
199 * @note Only available on GR551xx_B2 and later versions.
200 ****************************************************************************************
201 */
202 void hal_pwr_sleep_timer_irq_handler(void);
203
204 /**
205 ****************************************************************************************
206 * @brief PWR Sleep Timer Elapsed callback.
207 * @note Only available on GR551xx_B2 and later versions.
208 * This function should not be modified. When the callback is needed,
209 * the hal_pwr_sleep_timer_elapsed_callback can be implemented in the user file.
210 ****************************************************************************************
211 */
212 void hal_pwr_sleep_timer_elapsed_callback(void);
213
214 /** @} */
215 /** @} */
216
217 #ifdef __cplusplus
218 }
219 #endif
220
221 #endif /* ___HAL_SLEEP_TIMER_H__ */
222
223 /** @} */
224
225 /** @} */
226
227 /** @} */
hal_sleep_timer_status_get
uint32_t hal_sleep_timer_status_get(void)
get sleep timer is running or not
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_current_value
uint32_t hal_sleep_timer_get_current_value(void)
Get the current value of sleep timer.
pwr_handler_t
struct _pwr_handler pwr_handler_t
PWR callback handle Structure definition.
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_slp_elapsed_handler_t
void(* pwr_slp_elapsed_handler_t)(void)
PWR Sleep Timer Elapsed callback.
Definition: hal_sleep_timer.h:75
_pwr_handler
PWR callback handle Structure definition.
Definition: hal_sleep_timer.h:87
hal_status_t
hal_status_t
HAL Status structures definition.
Definition: gr_common.h:140
hal_def.h
This file contains HAL common definitions, enumeration, macros and structures definitions.
hal_sleep_timer_get_clock_freq
uint32_t hal_sleep_timer_get_clock_freq(void)
Get clock frequency of sleep timer.
hal_sleep_timer_stop
void hal_sleep_timer_stop(void)
stop Sleep Timer
_pwr_handler::pwr_slp_elapsed_hander
pwr_slp_elapsed_handler_t pwr_slp_elapsed_hander
Definition: hal_sleep_timer.h:88
ll_sleep_timer.h
Header file containing functions prototypes of sleep timer LL library.