20#ifndef STM32F4xx_HAL_LPTIM_H
21#define STM32F4xx_HAL_LPTIM_H
44#define LPTIM_EXTI_LINE_WAKEUPTIMER_EVENT EXTI_IMR_MR23
57} LPTIM_ClockConfigTypeDef;
75} LPTIM_ULPClockConfigTypeDef;
92} LPTIM_TriggerConfigTypeDef;
99 LPTIM_ClockConfigTypeDef Clock;
101 LPTIM_ULPClockConfigTypeDef UltraLowPowerClock;
103 LPTIM_TriggerConfigTypeDef Trigger;
105 uint32_t OutputPolarity;
112 uint32_t CounterSource;
122 HAL_LPTIM_STATE_RESET = 0x00U,
123 HAL_LPTIM_STATE_READY = 0x01U,
124 HAL_LPTIM_STATE_BUSY = 0x02U,
125 HAL_LPTIM_STATE_TIMEOUT = 0x03U,
126 HAL_LPTIM_STATE_ERROR = 0x04U
127} HAL_LPTIM_StateTypeDef;
132#if (USE_HAL_LPTIM_REGISTER_CALLBACKS == 1)
133typedef struct __LPTIM_HandleTypeDef
138 LPTIM_TypeDef *Instance;
140 LPTIM_InitTypeDef Init;
146 __IO HAL_LPTIM_StateTypeDef State;
148#if (USE_HAL_LPTIM_REGISTER_CALLBACKS == 1)
149 void (* MspInitCallback)(
struct __LPTIM_HandleTypeDef *hlptim);
150 void (* MspDeInitCallback)(
struct __LPTIM_HandleTypeDef *hlptim);
151 void (* CompareMatchCallback)(
struct __LPTIM_HandleTypeDef *hlptim);
152 void (* AutoReloadMatchCallback)(
struct __LPTIM_HandleTypeDef *hlptim);
153 void (* TriggerCallback)(
struct __LPTIM_HandleTypeDef *hlptim);
154 void (* CompareWriteCallback)(
struct __LPTIM_HandleTypeDef *hlptim);
155 void (* AutoReloadWriteCallback)(
struct __LPTIM_HandleTypeDef *hlptim);
156 void (* DirectionUpCallback)(
struct __LPTIM_HandleTypeDef *hlptim);
157 void (* DirectionDownCallback)(
struct __LPTIM_HandleTypeDef *hlptim);
159} LPTIM_HandleTypeDef;
161#if (USE_HAL_LPTIM_REGISTER_CALLBACKS == 1)
167 HAL_LPTIM_MSPINIT_CB_ID = 0x00U,
168 HAL_LPTIM_MSPDEINIT_CB_ID = 0x01U,
169 HAL_LPTIM_COMPARE_MATCH_CB_ID = 0x02U,
170 HAL_LPTIM_AUTORELOAD_MATCH_CB_ID = 0x03U,
171 HAL_LPTIM_TRIGGER_CB_ID = 0x04U,
172 HAL_LPTIM_COMPARE_WRITE_CB_ID = 0x05U,
173 HAL_LPTIM_AUTORELOAD_WRITE_CB_ID = 0x06U,
174 HAL_LPTIM_DIRECTION_UP_CB_ID = 0x07U,
175 HAL_LPTIM_DIRECTION_DOWN_CB_ID = 0x08U,
176} HAL_LPTIM_CallbackIDTypeDef;
181typedef void (*pLPTIM_CallbackTypeDef)(LPTIM_HandleTypeDef *hlptim);
196#define LPTIM_CLOCKSOURCE_APBCLOCK_LPOSC 0x00000000U
197#define LPTIM_CLOCKSOURCE_ULPTIM LPTIM_CFGR_CKSEL
205#define LPTIM_PRESCALER_DIV1 0x00000000U
206#define LPTIM_PRESCALER_DIV2 LPTIM_CFGR_PRESC_0
207#define LPTIM_PRESCALER_DIV4 LPTIM_CFGR_PRESC_1
208#define LPTIM_PRESCALER_DIV8 (LPTIM_CFGR_PRESC_0 | LPTIM_CFGR_PRESC_1)
209#define LPTIM_PRESCALER_DIV16 LPTIM_CFGR_PRESC_2
210#define LPTIM_PRESCALER_DIV32 (LPTIM_CFGR_PRESC_0 | LPTIM_CFGR_PRESC_2)
211#define LPTIM_PRESCALER_DIV64 (LPTIM_CFGR_PRESC_1 | LPTIM_CFGR_PRESC_2)
212#define LPTIM_PRESCALER_DIV128 LPTIM_CFGR_PRESC
221#define LPTIM_OUTPUTPOLARITY_HIGH 0x00000000U
222#define LPTIM_OUTPUTPOLARITY_LOW LPTIM_CFGR_WAVPOL
230#define LPTIM_CLOCKSAMPLETIME_DIRECTTRANSITION 0x00000000U
231#define LPTIM_CLOCKSAMPLETIME_2TRANSITIONS LPTIM_CFGR_CKFLT_0
232#define LPTIM_CLOCKSAMPLETIME_4TRANSITIONS LPTIM_CFGR_CKFLT_1
233#define LPTIM_CLOCKSAMPLETIME_8TRANSITIONS LPTIM_CFGR_CKFLT
241#define LPTIM_CLOCKPOLARITY_RISING 0x00000000U
242#define LPTIM_CLOCKPOLARITY_FALLING LPTIM_CFGR_CKPOL_0
243#define LPTIM_CLOCKPOLARITY_RISING_FALLING LPTIM_CFGR_CKPOL_1
251#define LPTIM_TRIGSOURCE_SOFTWARE 0x0000FFFFU
252#define LPTIM_TRIGSOURCE_0 0x00000000U
253#define LPTIM_TRIGSOURCE_1 LPTIM_CFGR_TRIGSEL_0
254#define LPTIM_TRIGSOURCE_2 LPTIM_CFGR_TRIGSEL_1
255#define LPTIM_TRIGSOURCE_3 (LPTIM_CFGR_TRIGSEL_0 | LPTIM_CFGR_TRIGSEL_1)
256#define LPTIM_TRIGSOURCE_4 LPTIM_CFGR_TRIGSEL_2
257#define LPTIM_TRIGSOURCE_5 (LPTIM_CFGR_TRIGSEL_0 | LPTIM_CFGR_TRIGSEL_2)
265#define LPTIM_ACTIVEEDGE_RISING LPTIM_CFGR_TRIGEN_0
266#define LPTIM_ACTIVEEDGE_FALLING LPTIM_CFGR_TRIGEN_1
267#define LPTIM_ACTIVEEDGE_RISING_FALLING LPTIM_CFGR_TRIGEN
275#define LPTIM_TRIGSAMPLETIME_DIRECTTRANSITION 0x00000000U
276#define LPTIM_TRIGSAMPLETIME_2TRANSITIONS LPTIM_CFGR_TRGFLT_0
277#define LPTIM_TRIGSAMPLETIME_4TRANSITIONS LPTIM_CFGR_TRGFLT_1
278#define LPTIM_TRIGSAMPLETIME_8TRANSITIONS LPTIM_CFGR_TRGFLT
287#define LPTIM_UPDATE_IMMEDIATE 0x00000000U
288#define LPTIM_UPDATE_ENDOFPERIOD LPTIM_CFGR_PRELOAD
297#define LPTIM_COUNTERSOURCE_INTERNAL 0x00000000U
298#define LPTIM_COUNTERSOURCE_EXTERNAL LPTIM_CFGR_COUNTMODE
307#define LPTIM_FLAG_DOWN LPTIM_ISR_DOWN
308#define LPTIM_FLAG_UP LPTIM_ISR_UP
309#define LPTIM_FLAG_ARROK LPTIM_ISR_ARROK
310#define LPTIM_FLAG_CMPOK LPTIM_ISR_CMPOK
311#define LPTIM_FLAG_EXTTRIG LPTIM_ISR_EXTTRIG
312#define LPTIM_FLAG_ARRM LPTIM_ISR_ARRM
313#define LPTIM_FLAG_CMPM LPTIM_ISR_CMPM
321#define LPTIM_IT_DOWN LPTIM_IER_DOWNIE
322#define LPTIM_IT_UP LPTIM_IER_UPIE
323#define LPTIM_IT_ARROK LPTIM_IER_ARROKIE
324#define LPTIM_IT_CMPOK LPTIM_IER_CMPOKIE
325#define LPTIM_IT_EXTTRIG LPTIM_IER_EXTTRIGIE
326#define LPTIM_IT_ARRM LPTIM_IER_ARRMIE
327#define LPTIM_IT_CMPM LPTIM_IER_CMPMIE
335#define LPTIM_OP_PAD_AF 0x00000000U
336#define LPTIM_OP_PAD_PA4 LPTIM_OR_LPT_IN1_RMP_0
337#define LPTIM_OP_PAD_PB9 LPTIM_OR_LPT_IN1_RMP_1
338#define LPTIM_OP_TIM_DAC LPTIM_OR_LPT_IN1_RMP
356#if (USE_HAL_LPTIM_REGISTER_CALLBACKS == 1)
357#define __HAL_LPTIM_RESET_HANDLE_STATE(__HANDLE__) do { \
358 (__HANDLE__)->State = HAL_LPTIM_STATE_RESET; \
359 (__HANDLE__)->MspInitCallback = NULL; \
360 (__HANDLE__)->MspDeInitCallback = NULL; \
363#define __HAL_LPTIM_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_LPTIM_STATE_RESET)
371#define __HAL_LPTIM_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (LPTIM_CR_ENABLE))
383#define __HAL_LPTIM_DISABLE(__HANDLE__) LPTIM_Disable(__HANDLE__)
390#define __HAL_LPTIM_START_CONTINUOUS(__HANDLE__) ((__HANDLE__)->Instance->CR |= LPTIM_CR_CNTSTRT)
396#define __HAL_LPTIM_START_SINGLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= LPTIM_CR_SNGSTRT)
406#define __HAL_LPTIM_AUTORELOAD_SET(__HANDLE__ , __VALUE__) ((__HANDLE__)->Instance->ARR = (__VALUE__))
415#define __HAL_LPTIM_COMPARE_SET(__HANDLE__ , __VALUE__) ((__HANDLE__)->Instance->CMP = (__VALUE__))
431#define __HAL_LPTIM_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->ISR &(__FLAG__)) == (__FLAG__))
447#define __HAL_LPTIM_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ICR = (__FLAG__))
464#define __HAL_LPTIM_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->IER |= (__INTERRUPT__))
481#define __HAL_LPTIM_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->IER &= (~(__INTERRUPT__)))
498#define __HAL_LPTIM_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->IER\
499 & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
510#define __HAL_LPTIM_OPTR_CONFIG(__HANDLE__ , __VALUE__) ((__HANDLE__)->Instance->OR = (__VALUE__))
517#define __HAL_LPTIM_WAKEUPTIMER_EXTI_ENABLE_IT() (EXTI->IMR\
518 |= LPTIM_EXTI_LINE_WAKEUPTIMER_EVENT)
524#define __HAL_LPTIM_WAKEUPTIMER_EXTI_DISABLE_IT() (EXTI->IMR\
525 &= ~(LPTIM_EXTI_LINE_WAKEUPTIMER_EVENT))
531#define __HAL_LPTIM_WAKEUPTIMER_EXTI_ENABLE_EVENT() (EXTI->EMR\
532 |= LPTIM_EXTI_LINE_WAKEUPTIMER_EVENT)
538#define __HAL_LPTIM_WAKEUPTIMER_EXTI_DISABLE_EVENT() (EXTI->EMR\
539 &= ~(LPTIM_EXTI_LINE_WAKEUPTIMER_EVENT))
540#if defined(EXTI_IMR_MR23)
546#define __HAL_LPTIM_WAKEUPTIMER_EXTI_ENABLE_FALLING_EDGE() (EXTI->FTSR\
547 |= LPTIM_EXTI_LINE_WAKEUPTIMER_EVENT)
553#define __HAL_LPTIM_WAKEUPTIMER_EXTI_DISABLE_FALLING_EDGE() (EXTI->FTSR\
554 &= ~(LPTIM_EXTI_LINE_WAKEUPTIMER_EVENT))
560#define __HAL_LPTIM_WAKEUPTIMER_EXTI_ENABLE_RISING_EDGE() (EXTI->RTSR\
561 |= LPTIM_EXTI_LINE_WAKEUPTIMER_EVENT)
567#define __HAL_LPTIM_WAKEUPTIMER_EXTI_DISABLE_RISING_EDGE() (EXTI->RTSR\
568 &= ~(LPTIM_EXTI_LINE_WAKEUPTIMER_EVENT))
574#define __HAL_LPTIM_WAKEUPTIMER_EXTI_ENABLE_RISING_FALLING_EDGE() do{__HAL_LPTIM_WAKEUPTIMER_EXTI_ENABLE_RISING_EDGE();\
575 __HAL_LPTIM_WAKEUPTIMER_EXTI_ENABLE_FALLING_EDGE();\
582#define __HAL_LPTIM_WAKEUPTIMER_EXTI_DISABLE_RISING_FALLING_EDGE() do{__HAL_LPTIM_WAKEUPTIMER_EXTI_DISABLE_RISING_EDGE();\
583 __HAL_LPTIM_WAKEUPTIMER_EXTI_DISABLE_FALLING_EDGE();\
590#define __HAL_LPTIM_WAKEUPTIMER_EXTI_GET_FLAG() (EXTI->PR\
591 & LPTIM_EXTI_LINE_WAKEUPTIMER_EVENT)
597#define __HAL_LPTIM_WAKEUPTIMER_EXTI_CLEAR_FLAG() (EXTI->PR\
598 = LPTIM_EXTI_LINE_WAKEUPTIMER_EVENT)
604#define __HAL_LPTIM_WAKEUPTIMER_EXTI_GENERATE_SWIT() (EXTI->SWIER\
605 |= LPTIM_EXTI_LINE_WAKEUPTIMER_EVENT)
626void HAL_LPTIM_MspInit(LPTIM_HandleTypeDef *hlptim);
627void HAL_LPTIM_MspDeInit(LPTIM_HandleTypeDef *hlptim);
639HAL_StatusTypeDef HAL_LPTIM_PWM_Start(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Pulse);
642HAL_StatusTypeDef HAL_LPTIM_PWM_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Pulse);
647HAL_StatusTypeDef HAL_LPTIM_OnePulse_Start(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Pulse);
650HAL_StatusTypeDef HAL_LPTIM_OnePulse_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Pulse);
655HAL_StatusTypeDef HAL_LPTIM_SetOnce_Start(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Pulse);
658HAL_StatusTypeDef HAL_LPTIM_SetOnce_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Pulse);
663HAL_StatusTypeDef HAL_LPTIM_Encoder_Start(LPTIM_HandleTypeDef *hlptim, uint32_t Period);
666HAL_StatusTypeDef HAL_LPTIM_Encoder_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period);
671HAL_StatusTypeDef HAL_LPTIM_TimeOut_Start(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Timeout);
674HAL_StatusTypeDef HAL_LPTIM_TimeOut_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Timeout);
679HAL_StatusTypeDef HAL_LPTIM_Counter_Start(LPTIM_HandleTypeDef *hlptim, uint32_t Period);
682HAL_StatusTypeDef HAL_LPTIM_Counter_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period);
693uint32_t HAL_LPTIM_ReadCounter(
const LPTIM_HandleTypeDef *hlptim);
694uint32_t HAL_LPTIM_ReadAutoReload(
const LPTIM_HandleTypeDef *hlptim);
695uint32_t HAL_LPTIM_ReadCompare(
const LPTIM_HandleTypeDef *hlptim);
705void HAL_LPTIM_IRQHandler(LPTIM_HandleTypeDef *hlptim);
708void HAL_LPTIM_CompareMatchCallback(LPTIM_HandleTypeDef *hlptim);
709void HAL_LPTIM_AutoReloadMatchCallback(LPTIM_HandleTypeDef *hlptim);
710void HAL_LPTIM_TriggerCallback(LPTIM_HandleTypeDef *hlptim);
711void HAL_LPTIM_CompareWriteCallback(LPTIM_HandleTypeDef *hlptim);
712void HAL_LPTIM_AutoReloadWriteCallback(LPTIM_HandleTypeDef *hlptim);
713void HAL_LPTIM_DirectionUpCallback(LPTIM_HandleTypeDef *hlptim);
714void HAL_LPTIM_DirectionDownCallback(LPTIM_HandleTypeDef *hlptim);
717#if (USE_HAL_LPTIM_REGISTER_CALLBACKS == 1)
718HAL_StatusTypeDef HAL_LPTIM_RegisterCallback(LPTIM_HandleTypeDef *lphtim, HAL_LPTIM_CallbackIDTypeDef CallbackID,
719 pLPTIM_CallbackTypeDef pCallback);
720HAL_StatusTypeDef HAL_LPTIM_UnRegisterCallback(LPTIM_HandleTypeDef *lphtim, HAL_LPTIM_CallbackIDTypeDef CallbackID);
731HAL_LPTIM_StateTypeDef HAL_LPTIM_GetState(
const LPTIM_HandleTypeDef *hlptim);
772#define IS_LPTIM_CLOCK_SOURCE(__SOURCE__) (((__SOURCE__) == LPTIM_CLOCKSOURCE_ULPTIM) || \
773 ((__SOURCE__) == LPTIM_CLOCKSOURCE_APBCLOCK_LPOSC))
776#define IS_LPTIM_CLOCK_PRESCALER(__PRESCALER__) (((__PRESCALER__) == LPTIM_PRESCALER_DIV1 ) || \
777 ((__PRESCALER__) == LPTIM_PRESCALER_DIV2 ) || \
778 ((__PRESCALER__) == LPTIM_PRESCALER_DIV4 ) || \
779 ((__PRESCALER__) == LPTIM_PRESCALER_DIV8 ) || \
780 ((__PRESCALER__) == LPTIM_PRESCALER_DIV16 ) || \
781 ((__PRESCALER__) == LPTIM_PRESCALER_DIV32 ) || \
782 ((__PRESCALER__) == LPTIM_PRESCALER_DIV64 ) || \
783 ((__PRESCALER__) == LPTIM_PRESCALER_DIV128))
785#define IS_LPTIM_CLOCK_PRESCALERDIV1(__PRESCALER__) ((__PRESCALER__) == LPTIM_PRESCALER_DIV1)
787#define IS_LPTIM_OUTPUT_POLARITY(__POLARITY__) (((__POLARITY__) == LPTIM_OUTPUTPOLARITY_LOW ) || \
788 ((__POLARITY__) == LPTIM_OUTPUTPOLARITY_HIGH))
790#define IS_LPTIM_CLOCK_SAMPLE_TIME(__SAMPLETIME__) (((__SAMPLETIME__) == LPTIM_CLOCKSAMPLETIME_DIRECTTRANSITION) || \
791 ((__SAMPLETIME__) == LPTIM_CLOCKSAMPLETIME_2TRANSITIONS) || \
792 ((__SAMPLETIME__) == LPTIM_CLOCKSAMPLETIME_4TRANSITIONS) || \
793 ((__SAMPLETIME__) == LPTIM_CLOCKSAMPLETIME_8TRANSITIONS))
795#define IS_LPTIM_CLOCK_POLARITY(__POLARITY__) (((__POLARITY__) == LPTIM_CLOCKPOLARITY_RISING) || \
796 ((__POLARITY__) == LPTIM_CLOCKPOLARITY_FALLING) || \
797 ((__POLARITY__) == LPTIM_CLOCKPOLARITY_RISING_FALLING))
799#define IS_LPTIM_TRG_SOURCE(__TRIG__) (((__TRIG__) == LPTIM_TRIGSOURCE_SOFTWARE) || \
800 ((__TRIG__) == LPTIM_TRIGSOURCE_0) || \
801 ((__TRIG__) == LPTIM_TRIGSOURCE_1) || \
802 ((__TRIG__) == LPTIM_TRIGSOURCE_2) || \
803 ((__TRIG__) == LPTIM_TRIGSOURCE_3) || \
804 ((__TRIG__) == LPTIM_TRIGSOURCE_4) || \
805 ((__TRIG__) == LPTIM_TRIGSOURCE_5))
807#define IS_LPTIM_EXT_TRG_POLARITY(__POLARITY__) (((__POLARITY__) == LPTIM_ACTIVEEDGE_RISING ) || \
808 ((__POLARITY__) == LPTIM_ACTIVEEDGE_FALLING ) || \
809 ((__POLARITY__) == LPTIM_ACTIVEEDGE_RISING_FALLING ))
811#define IS_LPTIM_TRIG_SAMPLE_TIME(__SAMPLETIME__) (((__SAMPLETIME__) == LPTIM_TRIGSAMPLETIME_DIRECTTRANSITION) || \
812 ((__SAMPLETIME__) == LPTIM_TRIGSAMPLETIME_2TRANSITIONS ) || \
813 ((__SAMPLETIME__) == LPTIM_TRIGSAMPLETIME_4TRANSITIONS ) || \
814 ((__SAMPLETIME__) == LPTIM_TRIGSAMPLETIME_8TRANSITIONS ))
816#define IS_LPTIM_UPDATE_MODE(__MODE__) (((__MODE__) == LPTIM_UPDATE_IMMEDIATE) || \
817 ((__MODE__) == LPTIM_UPDATE_ENDOFPERIOD))
819#define IS_LPTIM_COUNTER_SOURCE(__SOURCE__) (((__SOURCE__) == LPTIM_COUNTERSOURCE_INTERNAL) || \
820 ((__SOURCE__) == LPTIM_COUNTERSOURCE_EXTERNAL))
822#define IS_LPTIM_COMPARE(__COMPARE__) ((__COMPARE__) <= 0x0000FFFFUL)
824#define IS_LPTIM_PERIOD(__PERIOD__) ((0x00000001UL <= (__PERIOD__)) &&\
825 ((__PERIOD__) <= 0x0000FFFFUL))
827#define IS_LPTIM_PULSE(__PULSE__) ((__PULSE__) <= 0x0000FFFFUL)
837void LPTIM_Disable(LPTIM_HandleTypeDef *hlptim);
This file contains HAL common defines, enumeration, macros and structures definitions.
HAL_StatusTypeDef
HAL Status structures definition.
HAL_LockTypeDef
HAL Lock structures definition.