]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M7_STM32F7_STM32756G-EVAL_IAR_Keil/ST_Library/include/stm32f7xx_hal_lptim.h
Final V8.2.1 release ready for tagging:
[freertos] / FreeRTOS / Demo / CORTEX_M7_STM32F7_STM32756G-EVAL_IAR_Keil / ST_Library / include / stm32f7xx_hal_lptim.h
1 /**\r
2   ******************************************************************************\r
3   * @file    stm32f7xx_hal_lptim.h\r
4   * @author  MCD Application Team\r
5   * @version V1.0.0RC1\r
6   * @date    24-March-2015\r
7   * @brief   Header file of LPTIM HAL module.\r
8   ******************************************************************************\r
9   * @attention\r
10   *\r
11   * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>\r
12   *\r
13   * Redistribution and use in source and binary forms, with or without modification,\r
14   * are permitted provided that the following conditions are met:\r
15   *   1. Redistributions of source code must retain the above copyright notice,\r
16   *      this list of conditions and the following disclaimer.\r
17   *   2. Redistributions in binary form must reproduce the above copyright notice,\r
18   *      this list of conditions and the following disclaimer in the documentation\r
19   *      and/or other materials provided with the distribution.\r
20   *   3. Neither the name of STMicroelectronics nor the names of its contributors\r
21   *      may be used to endorse or promote products derived from this software\r
22   *      without specific prior written permission.\r
23   *\r
24   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\r
25   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
26   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r
27   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\r
28   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
29   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\r
30   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\r
31   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\r
32   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
33   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
34   *\r
35   ******************************************************************************\r
36   */ \r
37 \r
38 /* Define to prevent recursive inclusion -------------------------------------*/\r
39 #ifndef __STM32F7xx_HAL_LPTIM_H\r
40 #define __STM32F7xx_HAL_LPTIM_H\r
41 \r
42 #ifdef __cplusplus\r
43  extern "C" {\r
44 #endif\r
45 \r
46 /* Includes ------------------------------------------------------------------*/\r
47 #include "stm32f7xx_hal_def.h"\r
48 \r
49 /** @addtogroup STM32F7xx_HAL_Driver\r
50   * @{\r
51   */\r
52 \r
53 /** @defgroup LPTIM LPTIM\r
54   * @brief LPTIM HAL module driver\r
55   * @{\r
56   */\r
57   \r
58 /* Exported types ------------------------------------------------------------*/ \r
59 /** @defgroup LPTIM_Exported_Types LPTIM Exported Types\r
60   * @{\r
61   */\r
62 \r
63 /** \r
64   * @brief  LPTIM Clock configuration definition  \r
65   */\r
66 typedef struct\r
67 {\r
68   uint32_t Source;         /*!< Selects the clock source.\r
69                            This parameter can be a value of @ref LPTIM_Clock_Source   */\r
70 \r
71   uint32_t Prescaler;      /*!< Specifies the counter clock Prescaler.\r
72                            This parameter can be a value of @ref LPTIM_Clock_Prescaler */\r
73   \r
74 }LPTIM_ClockConfigTypeDef;\r
75 \r
76 /** \r
77   * @brief  LPTIM Clock configuration definition  \r
78   */\r
79 typedef struct\r
80 {\r
81   uint32_t Polarity;      /*!< Selects the polarity of the active edge for the counter unit\r
82                            if the ULPTIM input is selected.\r
83                            Note: This parameter is used only when Ultra low power clock source is used.\r
84                            Note: If the polarity is configured on 'both edges', an auxiliary clock\r
85                            (one of the Low power oscillator) must be active.\r
86                            This parameter can be a value of @ref LPTIM_Clock_Polarity */ \r
87   \r
88   uint32_t SampleTime;     /*!< Selects the clock sampling time to configure the clock glitch filter.\r
89                            Note: This parameter is used only when Ultra low power clock source is used.\r
90                            This parameter can be a value of @ref LPTIM_Clock_Sample_Time */  \r
91   \r
92 }LPTIM_ULPClockConfigTypeDef;\r
93 \r
94 /** \r
95   * @brief  LPTIM Trigger configuration definition  \r
96   */\r
97 typedef struct\r
98 {\r
99   uint32_t Source;        /*!< Selects the Trigger source.\r
100                           This parameter can be a value of @ref LPTIM_Trigger_Source */\r
101   \r
102   uint32_t ActiveEdge;    /*!< Selects the Trigger active edge.\r
103                           Note: This parameter is used only when an external trigger is used.\r
104                           This parameter can be a value of @ref LPTIM_External_Trigger_Polarity */\r
105   \r
106   uint32_t SampleTime;    /*!< Selects the trigger sampling time to configure the clock glitch filter.\r
107                           Note: This parameter is used only when an external trigger is used.\r
108                           This parameter can be a value of @ref LPTIM_Trigger_Sample_Time  */  \r
109 }LPTIM_TriggerConfigTypeDef;\r
110 \r
111 /** \r
112   * @brief  LPTIM Initialization Structure definition  \r
113   */\r
114 typedef struct\r
115 {                                                    \r
116   LPTIM_ClockConfigTypeDef     Clock;               /*!< Specifies the clock parameters */\r
117                                                     \r
118   LPTIM_ULPClockConfigTypeDef  UltraLowPowerClock;  /*!< Specifies the Ultra Low Power clock parameters */\r
119                                                     \r
120   LPTIM_TriggerConfigTypeDef   Trigger;             /*!< Specifies the Trigger parameters */\r
121                                                     \r
122   uint32_t                     OutputPolarity;      /*!< Specifies the Output polarity.\r
123                                                     This parameter can be a value of @ref LPTIM_Output_Polarity */\r
124                                                     \r
125   uint32_t                     UpdateMode;          /*!< Specifies whether the update of the autorelaod and the compare\r
126                                                     values is done immediately or after the end of current period.\r
127                                                     This parameter can be a value of @ref LPTIM_Updating_Mode */\r
128 \r
129   uint32_t                     CounterSource;       /*!< Specifies whether the counter is incremented each internal event\r
130                                                     or each external event.\r
131                                                     This parameter can be a value of @ref LPTIM_Counter_Source */  \r
132   \r
133 }LPTIM_InitTypeDef;\r
134 \r
135 /** \r
136   * @brief  HAL LPTIM State structure definition  \r
137   */ \r
138 typedef enum __HAL_LPTIM_StateTypeDef\r
139 {\r
140   HAL_LPTIM_STATE_RESET            = 0x00,    /*!< Peripheral not yet initialized or disabled  */\r
141   HAL_LPTIM_STATE_READY            = 0x01,    /*!< Peripheral Initialized and ready for use    */\r
142   HAL_LPTIM_STATE_BUSY             = 0x02,    /*!< An internal process is ongoing              */    \r
143   HAL_LPTIM_STATE_TIMEOUT          = 0x03,    /*!< Timeout state                               */  \r
144   HAL_LPTIM_STATE_ERROR            = 0x04     /*!< Internal Process is ongoing                */                                                                             \r
145 }HAL_LPTIM_StateTypeDef;\r
146 \r
147 /** \r
148   * @brief  LPTIM handle Structure definition  \r
149   */ \r
150 typedef struct\r
151 {\r
152       LPTIM_TypeDef              *Instance;         /*!< Register base address     */\r
153       \r
154       LPTIM_InitTypeDef           Init;             /*!< LPTIM required parameters */\r
155   \r
156       HAL_StatusTypeDef           Status;           /*!< LPTIM peripheral status   */  \r
157   \r
158       HAL_LockTypeDef             Lock;             /*!< LPTIM locking object      */\r
159   \r
160    __IO  HAL_LPTIM_StateTypeDef   State;            /*!< LPTIM peripheral state    */\r
161   \r
162 }LPTIM_HandleTypeDef;\r
163 \r
164 /**\r
165   * @}\r
166   */ \r
167 \r
168 /* Exported constants --------------------------------------------------------*/\r
169 /** @defgroup LPTIM_Exported_Constants LPTIM Exported Constants\r
170   * @{\r
171   */\r
172 \r
173 /** @defgroup LPTIM_Clock_Source LPTIM Clock Source\r
174   * @{\r
175   */\r
176 #define LPTIM_CLOCKSOURCE_APBCLOCK_LPOSC        ((uint32_t)0x00)\r
177 #define LPTIM_CLOCKSOURCE_ULPTIM                LPTIM_CFGR_CKSEL                                           \r
178 /**                                             \r
179   * @}\r
180   */\r
181 \r
182 /** @defgroup LPTIM_Clock_Prescaler LPTIM Clock Prescaler\r
183   * @{\r
184   */\r
185 #define LPTIM_PRESCALER_DIV1                    ((uint32_t)0x000000)\r
186 #define LPTIM_PRESCALER_DIV2                    LPTIM_CFGR_PRESC_0\r
187 #define LPTIM_PRESCALER_DIV4                    LPTIM_CFGR_PRESC_1\r
188 #define LPTIM_PRESCALER_DIV8                    ((uint32_t)(LPTIM_CFGR_PRESC_0 | LPTIM_CFGR_PRESC_1))\r
189 #define LPTIM_PRESCALER_DIV16                   LPTIM_CFGR_PRESC_2\r
190 #define LPTIM_PRESCALER_DIV32                   ((uint32_t)(LPTIM_CFGR_PRESC_0 | LPTIM_CFGR_PRESC_2))\r
191 #define LPTIM_PRESCALER_DIV64                   ((uint32_t)(LPTIM_CFGR_PRESC_1 | LPTIM_CFGR_PRESC_2))\r
192 #define LPTIM_PRESCALER_DIV128                  ((uint32_t)LPTIM_CFGR_PRESC)                                             \r
193 /**\r
194   * @}\r
195   */ \r
196 \r
197 /** @defgroup LPTIM_Output_Polarity LPTIM Output Polarity\r
198   * @{\r
199   */\r
200 \r
201 #define LPTIM_OUTPUTPOLARITY_HIGH               ((uint32_t)0x00000000)\r
202 #define LPTIM_OUTPUTPOLARITY_LOW                (LPTIM_CFGR_WAVPOL)\r
203 /**\r
204   * @}\r
205   */\r
206 \r
207 /** @defgroup LPTIM_Clock_Sample_Time LPTIM Clock Sample Time\r
208   * @{\r
209   */\r
210 #define LPTIM_CLOCKSAMPLETIME_DIRECTTRANSITION ((uint32_t)0x00000000)\r
211 #define LPTIM_CLOCKSAMPLETIME_2TRANSITIONS     LPTIM_CFGR_CKFLT_0\r
212 #define LPTIM_CLOCKSAMPLETIME_4TRANSITIONS     LPTIM_CFGR_CKFLT_1\r
213 #define LPTIM_CLOCKSAMPLETIME_8TRANSITIONS     LPTIM_CFGR_CKFLT\r
214 /**\r
215   * @}\r
216   */\r
217 \r
218 /** @defgroup LPTIM_Clock_Polarity LPTIM Clock Polarity\r
219   * @{\r
220   */\r
221 \r
222 #define LPTIM_CLOCKPOLARITY_RISING                ((uint32_t)0x00000000)\r
223 #define LPTIM_CLOCKPOLARITY_FALLING               LPTIM_CFGR_CKPOL_0\r
224 #define LPTIM_CLOCKPOLARITY_RISING_FALLING        LPTIM_CFGR_CKPOL_1\r
225 /**\r
226   * @}\r
227   */\r
228 \r
229 /** @defgroup LPTIM_Trigger_Source LPTIM Trigger Source\r
230   * @{\r
231   */\r
232 #define LPTIM_TRIGSOURCE_SOFTWARE               ((uint32_t)0x0000FFFF)\r
233 #define LPTIM_TRIGSOURCE_0                      ((uint32_t)0x00000000)\r
234 #define LPTIM_TRIGSOURCE_1                      ((uint32_t)LPTIM_CFGR_TRIGSEL_0)\r
235 #define LPTIM_TRIGSOURCE_2                      LPTIM_CFGR_TRIGSEL_1\r
236 #define LPTIM_TRIGSOURCE_3                      ((uint32_t)LPTIM_CFGR_TRIGSEL_0 | LPTIM_CFGR_TRIGSEL_1)\r
237 #define LPTIM_TRIGSOURCE_4                      LPTIM_CFGR_TRIGSEL_2\r
238 #define LPTIM_TRIGSOURCE_5                      ((uint32_t)LPTIM_CFGR_TRIGSEL_0 | LPTIM_CFGR_TRIGSEL_2)\r
239 /**\r
240   * @}\r
241   */\r
242 \r
243 /** @defgroup LPTIM_External_Trigger_Polarity LPTIM External Trigger Polarity\r
244   * @{\r
245   */\r
246 #define LPTIM_ACTIVEEDGE_RISING                LPTIM_CFGR_TRIGEN_0\r
247 #define LPTIM_ACTIVEEDGE_FALLING               LPTIM_CFGR_TRIGEN_1\r
248 #define LPTIM_ACTIVEEDGE_RISING_FALLING        LPTIM_CFGR_TRIGEN\r
249 /**\r
250   * @}\r
251   */\r
252 \r
253 /** @defgroup LPTIM_Trigger_Sample_Time LPTIM Trigger Sample Time\r
254   * @{\r
255   */\r
256 #define LPTIM_TRIGSAMPLETIME_DIRECTTRANSITION  ((uint32_t)0x00000000)\r
257 #define LPTIM_TRIGSAMPLETIME_2TRANSITIONS      LPTIM_CFGR_TRGFLT_0\r
258 #define LPTIM_TRIGSAMPLETIME_4TRANSITIONS      LPTIM_CFGR_TRGFLT_1\r
259 #define LPTIM_TRIGSAMPLETIME_8TRANSITIONS      LPTIM_CFGR_TRGFLT\r
260 /**\r
261   * @}\r
262   */\r
263 \r
264 /** @defgroup LPTIM_Updating_Mode LPTIM Updating Mode\r
265   * @{\r
266   */\r
267 \r
268 #define LPTIM_UPDATE_IMMEDIATE                  ((uint32_t)0x00000000)\r
269 #define LPTIM_UPDATE_ENDOFPERIOD                LPTIM_CFGR_PRELOAD\r
270 /**\r
271   * @}\r
272   */\r
273 \r
274 /** @defgroup LPTIM_Counter_Source LPTIM Counter Source\r
275   * @{\r
276   */\r
277 \r
278 #define LPTIM_COUNTERSOURCE_INTERNAL            ((uint32_t)0x00000000)\r
279 #define LPTIM_COUNTERSOURCE_EXTERNAL            LPTIM_CFGR_COUNTMODE\r
280 /**\r
281   * @}\r
282   */\r
283  \r
284 /** @defgroup LPTIM_Flag_Definition LPTIM Flag Definition\r
285   * @{\r
286   */\r
287 \r
288 #define LPTIM_FLAG_DOWN                          LPTIM_ISR_DOWN\r
289 #define LPTIM_FLAG_UP                            LPTIM_ISR_UP\r
290 #define LPTIM_FLAG_ARROK                         LPTIM_ISR_ARROK\r
291 #define LPTIM_FLAG_CMPOK                         LPTIM_ISR_CMPOK\r
292 #define LPTIM_FLAG_EXTTRIG                       LPTIM_ISR_EXTTRIG\r
293 #define LPTIM_FLAG_ARRM                          LPTIM_ISR_ARRM\r
294 #define LPTIM_FLAG_CMPM                          LPTIM_ISR_CMPM\r
295 /**\r
296   * @}\r
297   */\r
298 \r
299 /** @defgroup LPTIM_Interrupts_Definition LPTIM Interrupts Definition\r
300   * @{\r
301   */\r
302 \r
303 #define LPTIM_IT_DOWN                            LPTIM_IER_DOWNIE\r
304 #define LPTIM_IT_UP                              LPTIM_IER_UPIE\r
305 #define LPTIM_IT_ARROK                           LPTIM_IER_ARROKIE\r
306 #define LPTIM_IT_CMPOK                           LPTIM_IER_CMPOKIE\r
307 #define LPTIM_IT_EXTTRIG                         LPTIM_IER_EXTTRIGIE\r
308 #define LPTIM_IT_ARRM                            LPTIM_IER_ARRMIE\r
309 #define LPTIM_IT_CMPM                            LPTIM_IER_CMPMIE\r
310 /**\r
311   * @}\r
312   */\r
313 \r
314 /**\r
315   * @}\r
316   */\r
317 \r
318 /* Exported macro ------------------------------------------------------------*/\r
319 /** @defgroup LPTIM_Exported_Macros LPTIM Exported Macros\r
320   * @{\r
321   */\r
322 \r
323 /** @brief Reset LPTIM handle state\r
324   * @param  __HANDLE__: LPTIM handle\r
325   * @retval None\r
326   */\r
327 #define __HAL_LPTIM_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_LPTIM_STATE_RESET)\r
328 \r
329 /**\r
330   * @brief  Enable/Disable the LPTIM peripheral.\r
331   * @param  __HANDLE__: LPTIM handle\r
332   * @retval None\r
333   */\r
334 #define __HAL_LPTIM_ENABLE(__HANDLE__)   ((__HANDLE__)->Instance->CR |=  (LPTIM_CR_ENABLE))\r
335 #define __HAL_LPTIM_DISABLE(__HANDLE__)  ((__HANDLE__)->Instance->CR &=  ~(LPTIM_CR_ENABLE))\r
336 \r
337 /**\r
338   * @brief  Starts the LPTIM peripheral in Continuous or in single mode.\r
339   * @param  __HANDLE__: DMA handle\r
340   * @retval None\r
341   */\r
342 #define __HAL_LPTIM_START_CONTINUOUS(__HANDLE__)  ((__HANDLE__)->Instance->CR |=  LPTIM_CR_CNTSTRT)\r
343 #define __HAL_LPTIM_START_SINGLE(__HANDLE__)      ((__HANDLE__)->Instance->CR |=  LPTIM_CR_SNGSTRT)\r
344  \r
345     \r
346 /**\r
347   * @brief  Writes the passed parameter in the Autoreload register.\r
348   * @param  __HANDLE__: LPTIM handle\r
349   * @param  __VALUE__ : Autoreload value\r
350   * @retval None\r
351   */\r
352 #define __HAL_LPTIM_AUTORELOAD_SET(__HANDLE__ , __VALUE__)  ((__HANDLE__)->Instance->ARR =  (__VALUE__))\r
353 \r
354 /**\r
355   * @brief  Writes the passed parameter in the Compare register.\r
356   * @param  __HANDLE__: LPTIM handle\r
357   * @param  __VALUE__ : Compare value\r
358   * @retval None\r
359   */\r
360 #define __HAL_LPTIM_COMPARE_SET(__HANDLE__ , __VALUE__)     ((__HANDLE__)->Instance->CMP =  (__VALUE__))\r
361 \r
362 /**\r
363   * @brief  Checks whether the specified LPTIM flag is set or not.\r
364   * @param  __HANDLE__: LPTIM handle\r
365   * @param  __FLAG__  : LPTIM flag to check\r
366   *            This parameter can be a value of:\r
367   *            @arg LPTIM_FLAG_DOWN    : Counter direction change up Flag.\r
368   *            @arg LPTIM_FLAG_UP      : Counter direction change down to up Flag.\r
369   *            @arg LPTIM_FLAG_ARROK   : Autoreload register update OK Flag.\r
370   *            @arg LPTIM_FLAG_CMPOK   : Compare register update OK Flag.\r
371   *            @arg LPTIM_FLAG_EXTTRIG : External trigger edge event Flag.\r
372   *            @arg LPTIM_FLAG_ARRM    : Autoreload match Flag.\r
373   *            @arg LPTIM_FLAG_CMPM    : Compare match Flag.\r
374   * @retval The state of the specified flag (SET or RESET).\r
375   */\r
376 #define __HAL_LPTIM_GET_FLAG(__HANDLE__, __FLAG__)          (((__HANDLE__)->Instance->ISR &(__FLAG__)) == (__FLAG__))\r
377 \r
378 /**\r
379   * @brief  Clears the specified LPTIM flag.\r
380   * @param  __HANDLE__: LPTIM handle.\r
381   * @param  __FLAG__  : LPTIM flag to clear.\r
382   *            This parameter can be a value of:\r
383   *            @arg LPTIM_FLAG_DOWN    : Counter direction change up Flag.\r
384   *            @arg LPTIM_FLAG_UP      : Counter direction change down to up Flag.\r
385   *            @arg LPTIM_FLAG_ARROK   : Autoreload register update OK Flag.\r
386   *            @arg LPTIM_FLAG_CMPOK   : Compare register update OK Flag.\r
387   *            @arg LPTIM_FLAG_EXTTRIG : External trigger edge event Flag.\r
388   *            @arg LPTIM_FLAG_ARRM    : Autoreload match Flag.\r
389   *            @arg LPTIM_FLAG_CMPM    : Compare match Flag.\r
390   * @retval None.\r
391   */\r
392 #define __HAL_LPTIM_CLEAR_FLAG(__HANDLE__, __FLAG__)         ((__HANDLE__)->Instance->ICR  = (__FLAG__))\r
393 \r
394 /**\r
395   * @brief  Enable the specified LPTIM interrupt.\r
396   * @param  __HANDLE__    : LPTIM handle.\r
397   * @param  __INTERRUPT__ : LPTIM interrupt to set.\r
398   *            This parameter can be a value of:\r
399   *            @arg LPTIM_IT_DOWN    : Counter direction change up Interrupt.\r
400   *            @arg LPTIM_IT_UP      : Counter direction change down to up Interrupt.\r
401   *            @arg LPTIM_IT_ARROK   : Autoreload register update OK Interrupt.\r
402   *            @arg LPTIM_IT_CMPOK   : Compare register update OK Interrupt.\r
403   *            @arg LPTIM_IT_EXTTRIG : External trigger edge event Interrupt.\r
404   *            @arg LPTIM_IT_ARRM    : Autoreload match Interrupt.\r
405   *            @arg LPTIM_IT_CMPM    : Compare match Interrupt.\r
406   * @retval None.\r
407   */\r
408 #define __HAL_LPTIM_ENABLE_IT(__HANDLE__, __INTERRUPT__)         ((__HANDLE__)->Instance->IER  |= (__INTERRUPT__))\r
409 \r
410  /**\r
411   * @brief  Disable the specified LPTIM interrupt.\r
412   * @param  __HANDLE__    : LPTIM handle.\r
413   * @param  __INTERRUPT__ : LPTIM interrupt to set.\r
414   *            This parameter can be a value of:\r
415   *            @arg LPTIM_IT_DOWN    : Counter direction change up Interrupt.\r
416   *            @arg LPTIM_IT_UP      : Counter direction change down to up Interrupt.\r
417   *            @arg LPTIM_IT_ARROK   : Autoreload register update OK Interrupt.\r
418   *            @arg LPTIM_IT_CMPOK   : Compare register update OK Interrupt.\r
419   *            @arg LPTIM_IT_EXTTRIG : External trigger edge event Interrupt.\r
420   *            @arg LPTIM_IT_ARRM    : Autoreload match Interrupt.\r
421   *            @arg LPTIM_IT_CMPM    : Compare match Interrupt.\r
422   * @retval None.\r
423   */\r
424 #define __HAL_LPTIM_DISABLE_IT(__HANDLE__, __INTERRUPT__)         ((__HANDLE__)->Instance->IER  &= (~(__INTERRUPT__)))\r
425 \r
426     /**\r
427   * @brief  Checks whether the specified LPTIM interrupt is set or not.\r
428   * @param  __HANDLE__    : LPTIM handle.\r
429   * @param  __INTERRUPT__ : LPTIM interrupt to check.\r
430   *            This parameter can be a value of:\r
431   *            @arg LPTIM_IT_DOWN    : Counter direction change up Interrupt.\r
432   *            @arg LPTIM_IT_UP      : Counter direction change down to up Interrupt.\r
433   *            @arg LPTIM_IT_ARROK   : Autoreload register update OK Interrupt.\r
434   *            @arg LPTIM_IT_CMPOK   : Compare register update OK Interrupt.\r
435   *            @arg LPTIM_IT_EXTTRIG : External trigger edge event Interrupt.\r
436   *            @arg LPTIM_IT_ARRM    : Autoreload match Interrupt.\r
437   *            @arg LPTIM_IT_CMPM    : Compare match Interrupt.\r
438   * @retval Interrupt status.\r
439   */\r
440     \r
441 #define __HAL_LPTIM_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->IER & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)\r
442 \r
443 /**\r
444   * @}\r
445   */\r
446    \r
447 /* Exported functions --------------------------------------------------------*/\r
448 /** @defgroup LPTIM_Exported_Functions LPTIM Exported Functions\r
449   * @{\r
450   */\r
451 \r
452 /* Initialization/de-initialization functions  ********************************/\r
453 HAL_StatusTypeDef HAL_LPTIM_Init(LPTIM_HandleTypeDef *hlptim);\r
454 HAL_StatusTypeDef HAL_LPTIM_DeInit(LPTIM_HandleTypeDef *hlptim);\r
455 \r
456 /* MSP functions  *************************************************************/\r
457 void HAL_LPTIM_MspInit(LPTIM_HandleTypeDef *hlptim);\r
458 void HAL_LPTIM_MspDeInit(LPTIM_HandleTypeDef *hlptim);\r
459 \r
460 /* Start/Stop operation functions  *********************************************/\r
461 /* ################################# PWM Mode ################################*/\r
462 /* Blocking mode: Polling */\r
463 HAL_StatusTypeDef HAL_LPTIM_PWM_Start(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Pulse);\r
464 HAL_StatusTypeDef HAL_LPTIM_PWM_Stop(LPTIM_HandleTypeDef *hlptim);\r
465 /* Non-Blocking mode: Interrupt */\r
466 HAL_StatusTypeDef HAL_LPTIM_PWM_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Pulse);\r
467 HAL_StatusTypeDef HAL_LPTIM_PWM_Stop_IT(LPTIM_HandleTypeDef *hlptim);\r
468 \r
469 /* ############################# One Pulse Mode ##############################*/\r
470 /* Blocking mode: Polling */\r
471 HAL_StatusTypeDef HAL_LPTIM_OnePulse_Start(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Pulse);\r
472 HAL_StatusTypeDef HAL_LPTIM_OnePulse_Stop(LPTIM_HandleTypeDef *hlptim);\r
473 /* Non-Blocking mode: Interrupt */\r
474 HAL_StatusTypeDef HAL_LPTIM_OnePulse_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Pulse);\r
475 HAL_StatusTypeDef HAL_LPTIM_OnePulse_Stop_IT(LPTIM_HandleTypeDef *hlptim);\r
476 \r
477 /* ############################## Set once Mode ##############################*/\r
478 /* Blocking mode: Polling */\r
479 HAL_StatusTypeDef HAL_LPTIM_SetOnce_Start(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Pulse);\r
480 HAL_StatusTypeDef HAL_LPTIM_SetOnce_Stop(LPTIM_HandleTypeDef *hlptim);\r
481 /* Non-Blocking mode: Interrupt */\r
482 HAL_StatusTypeDef HAL_LPTIM_SetOnce_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Pulse);\r
483 HAL_StatusTypeDef HAL_LPTIM_SetOnce_Stop_IT(LPTIM_HandleTypeDef *hlptim);\r
484 \r
485 /* ############################### Encoder Mode ##############################*/\r
486 /* Blocking mode: Polling */\r
487 HAL_StatusTypeDef HAL_LPTIM_Encoder_Start(LPTIM_HandleTypeDef *hlptim, uint32_t Period);\r
488 HAL_StatusTypeDef HAL_LPTIM_Encoder_Stop(LPTIM_HandleTypeDef *hlptim);\r
489 /* Non-Blocking mode: Interrupt */\r
490 HAL_StatusTypeDef HAL_LPTIM_Encoder_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period);\r
491 HAL_StatusTypeDef HAL_LPTIM_Encoder_Stop_IT(LPTIM_HandleTypeDef *hlptim);\r
492 \r
493 /* ############################# Time out  Mode ##############################*/\r
494 /* Blocking mode: Polling */\r
495 HAL_StatusTypeDef HAL_LPTIM_TimeOut_Start(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Timeout);\r
496 HAL_StatusTypeDef HAL_LPTIM_TimeOut_Stop(LPTIM_HandleTypeDef *hlptim);\r
497 /* Non-Blocking mode: Interrupt */\r
498 HAL_StatusTypeDef HAL_LPTIM_TimeOut_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Timeout);\r
499 HAL_StatusTypeDef HAL_LPTIM_TimeOut_Stop_IT(LPTIM_HandleTypeDef *hlptim);\r
500 \r
501 /* ############################## Counter Mode ###############################*/\r
502 /* Blocking mode: Polling */\r
503 HAL_StatusTypeDef HAL_LPTIM_Counter_Start(LPTIM_HandleTypeDef *hlptim, uint32_t Period);\r
504 HAL_StatusTypeDef HAL_LPTIM_Counter_Stop(LPTIM_HandleTypeDef *hlptim);\r
505 /* Non-Blocking mode: Interrupt */\r
506 HAL_StatusTypeDef HAL_LPTIM_Counter_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period);\r
507 HAL_StatusTypeDef HAL_LPTIM_Counter_Stop_IT(LPTIM_HandleTypeDef *hlptim);\r
508 \r
509 /* Reading operation functions ************************************************/\r
510 uint32_t HAL_LPTIM_ReadCounter(LPTIM_HandleTypeDef *hlptim);\r
511 uint32_t HAL_LPTIM_ReadAutoReload(LPTIM_HandleTypeDef *hlptim);\r
512 uint32_t HAL_LPTIM_ReadCompare(LPTIM_HandleTypeDef *hlptim);\r
513 \r
514 /* LPTIM IRQ functions  *******************************************************/\r
515 void HAL_LPTIM_IRQHandler(LPTIM_HandleTypeDef *hlptim);\r
516 \r
517 /* CallBack functions  ********************************************************/\r
518 void HAL_LPTIM_CompareMatchCallback(LPTIM_HandleTypeDef *hlptim);\r
519 void HAL_LPTIM_AutoReloadMatchCallback(LPTIM_HandleTypeDef *hlptim);\r
520 void HAL_LPTIM_TriggerCallback(LPTIM_HandleTypeDef *hlptim);\r
521 void HAL_LPTIM_CompareWriteCallback(LPTIM_HandleTypeDef *hlptim);\r
522 void HAL_LPTIM_AutoReloadWriteCallback(LPTIM_HandleTypeDef *hlptim);\r
523 void HAL_LPTIM_DirectionUpCallback(LPTIM_HandleTypeDef *hlptim);\r
524 void HAL_LPTIM_DirectionDownCallback(LPTIM_HandleTypeDef *hlptim);\r
525 \r
526 /* Peripheral State functions  ************************************************/\r
527 HAL_LPTIM_StateTypeDef HAL_LPTIM_GetState(LPTIM_HandleTypeDef *hlptim);\r
528 \r
529 /**\r
530   * @}\r
531   */\r
532   \r
533 /* Private types -------------------------------------------------------------*/\r
534 /** @defgroup LPTIM_Private_Types LPTIM Private Types\r
535   * @{\r
536   */\r
537 \r
538 /**\r
539   * @}\r
540   */ \r
541 \r
542 /* Private variables ---------------------------------------------------------*/\r
543 /** @defgroup LPTIM_Private_Variables LPTIM Private Variables\r
544   * @{\r
545   */\r
546   \r
547 /**\r
548   * @}\r
549   */ \r
550 \r
551 /* Private constants ---------------------------------------------------------*/\r
552 /** @defgroup LPTIM_Private_Constants LPTIM Private Constants\r
553   * @{\r
554   */\r
555 \r
556 /**\r
557   * @}\r
558   */ \r
559 \r
560 /* Private macros ------------------------------------------------------------*/\r
561 /** @defgroup LPTIM_Private_Macros LPTIM Private Macros\r
562   * @{\r
563   */\r
564   \r
565 #define IS_LPTIM_CLOCK_SOURCE(__SOURCE__)           (((__SOURCE__) == LPTIM_CLOCKSOURCE_ULPTIM) || \\r
566                                                      ((__SOURCE__) == LPTIM_CLOCKSOURCE_APBCLOCK_LPOSC))\r
567                                                                                                          \r
568 #define IS_LPTIM_CLOCK_PRESCALER(__PRESCALER__)     (((__PRESCALER__) ==  LPTIM_PRESCALER_DIV1  ) || \\r
569                                                      ((__PRESCALER__) ==  LPTIM_PRESCALER_DIV2  ) || \\r
570                                                      ((__PRESCALER__) ==  LPTIM_PRESCALER_DIV4  ) || \\r
571                                                      ((__PRESCALER__) ==  LPTIM_PRESCALER_DIV8  ) || \\r
572                                                      ((__PRESCALER__) ==  LPTIM_PRESCALER_DIV16 ) || \\r
573                                                      ((__PRESCALER__) ==  LPTIM_PRESCALER_DIV32 ) || \\r
574                                                      ((__PRESCALER__) ==  LPTIM_PRESCALER_DIV64 ) || \\r
575                                                      ((__PRESCALER__) ==  LPTIM_PRESCALER_DIV128))\r
576 #define IS_LPTIM_CLOCK_PRESCALERDIV1(__PRESCALER__) ((__PRESCALER__) ==  LPTIM_PRESCALER_DIV1)                                                                                                   \r
577 \r
578 #define IS_LPTIM_OUTPUT_POLARITY(__POLARITY__)      (((__POLARITY__) == LPTIM_OUTPUTPOLARITY_LOW ) || \\r
579                                                      ((__POLARITY__) == LPTIM_OUTPUTPOLARITY_HIGH))\r
580                                                                                                          \r
581 #define IS_LPTIM_CLOCK_SAMPLE_TIME(__SAMPLETIME__)  (((__SAMPLETIME__) == LPTIM_CLOCKSAMPLETIME_DIRECTTRANSITION) || \\r
582                                                      ((__SAMPLETIME__) == LPTIM_CLOCKSAMPLETIME_2TRANSITIONS)     || \\r
583                                                      ((__SAMPLETIME__) == LPTIM_CLOCKSAMPLETIME_4TRANSITIONS)     || \\r
584                                                      ((__SAMPLETIME__) == LPTIM_CLOCKSAMPLETIME_8TRANSITIONS))\r
585 \r
586 #define IS_LPTIM_CLOCK_POLARITY(__POLARITY__)       (((__POLARITY__) == LPTIM_CLOCKPOLARITY_RISING)  || \\r
587                                                      ((__POLARITY__) == LPTIM_CLOCKPOLARITY_FALLING) || \\r
588                                                      ((__POLARITY__) == LPTIM_CLOCKPOLARITY_RISING_FALLING))\r
589 \r
590 #define IS_LPTIM_TRG_SOURCE(__TRIG__)               (((__TRIG__) == LPTIM_TRIGSOURCE_SOFTWARE) || \\r
591                                                                                                          ((__TRIG__) == LPTIM_TRIGSOURCE_0) || \\r
592                                                                                                          ((__TRIG__) == LPTIM_TRIGSOURCE_1) || \\r
593                                                                                                          ((__TRIG__) == LPTIM_TRIGSOURCE_2) || \\r
594                                                                                                          ((__TRIG__) == LPTIM_TRIGSOURCE_3) || \\r
595                                                                                                          ((__TRIG__) == LPTIM_TRIGSOURCE_4) || \\r
596                                                                                                          ((__TRIG__) == LPTIM_TRIGSOURCE_5))\r
597 \r
598 #define IS_LPTIM_EXT_TRG_POLARITY(__POLAR__)        (((__POLAR__) == LPTIM_ACTIVEEDGE_RISING         ) || \\r
599                                                      ((__POLAR__) == LPTIM_ACTIVEEDGE_FALLING        ) || \\r
600                                                      ((__POLAR__) == LPTIM_ACTIVEEDGE_RISING_FALLING ))\r
601 \r
602 #define IS_LPTIM_TRIG_SAMPLE_TIME(__SAMPLETIME__)   (((__SAMPLETIME__) == LPTIM_TRIGSAMPLETIME_DIRECTTRANSITION) || \\r
603                                                      ((__SAMPLETIME__) == LPTIM_TRIGSAMPLETIME_2TRANSITIONS    ) || \\r
604                                                      ((__SAMPLETIME__) == LPTIM_TRIGSAMPLETIME_4TRANSITIONS    ) || \\r
605                                                      ((__SAMPLETIME__) == LPTIM_TRIGSAMPLETIME_8TRANSITIONS    ))               \r
606 \r
607 #define IS_LPTIM_UPDATE_MODE(__MODE__)              (((__MODE__) == LPTIM_UPDATE_IMMEDIATE) || \\r
608                                                      ((__MODE__) == LPTIM_UPDATE_ENDOFPERIOD))\r
609 \r
610 #define IS_LPTIM_COUNTER_SOURCE(__SOURCE__)         (((__SOURCE__) == LPTIM_COUNTERSOURCE_INTERNAL) || \\r
611                                                      ((__SOURCE__) == LPTIM_COUNTERSOURCE_EXTERNAL))\r
612 \r
613 #define IS_LPTIM_AUTORELOAD(__AUTORELOAD__)         ((__AUTORELOAD__) <= 0x0000FFFF)\r
614 \r
615 #define IS_LPTIM_COMPARE(__COMPARE__)               ((__COMPARE__) <= 0x0000FFFF)\r
616   \r
617 #define IS_LPTIM_PERIOD(PERIOD)               ((PERIOD) <= 0x0000FFFF)\r
618 \r
619 #define IS_LPTIM_PULSE(PULSE)                 ((PULSE) <= 0x0000FFFF)\r
620 \r
621 /**\r
622   * @}\r
623   */ \r
624 \r
625 /* Private functions ---------------------------------------------------------*/\r
626 /** @defgroup LPTIM_Private_Functions LPTIM Private Functions\r
627   * @{\r
628   */\r
629   \r
630 /**\r
631   * @}\r
632   */\r
633   \r
634 /**\r
635   * @}\r
636   */ \r
637 \r
638 /**\r
639   * @}\r
640   */ \r
641   \r
642 #ifdef __cplusplus\r
643 }\r
644 #endif\r
645 \r
646 #endif /* __STM32F7xx_HAL_LPTIM_H */\r
647 \r
648 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r