18#if defined(USE_FULL_LL_DRIVER)
27#include "stm32_assert.h"
29#define assert_param(expr) ((void)0U)
49#define IS_LL_LPTIM_CLOCK_SOURCE(__VALUE__) (((__VALUE__) == LL_LPTIM_CLK_SOURCE_INTERNAL) \
50 || ((__VALUE__) == LL_LPTIM_CLK_SOURCE_EXTERNAL))
52#define IS_LL_LPTIM_CLOCK_PRESCALER(__VALUE__) (((__VALUE__) == LL_LPTIM_PRESCALER_DIV1) \
53 || ((__VALUE__) == LL_LPTIM_PRESCALER_DIV2) \
54 || ((__VALUE__) == LL_LPTIM_PRESCALER_DIV4) \
55 || ((__VALUE__) == LL_LPTIM_PRESCALER_DIV8) \
56 || ((__VALUE__) == LL_LPTIM_PRESCALER_DIV16) \
57 || ((__VALUE__) == LL_LPTIM_PRESCALER_DIV32) \
58 || ((__VALUE__) == LL_LPTIM_PRESCALER_DIV64) \
59 || ((__VALUE__) == LL_LPTIM_PRESCALER_DIV128))
61#define IS_LL_LPTIM_WAVEFORM(__VALUE__) (((__VALUE__) == LL_LPTIM_OUTPUT_WAVEFORM_PWM) \
62 || ((__VALUE__) == LL_LPTIM_OUTPUT_WAVEFORM_SETONCE))
64#define IS_LL_LPTIM_OUTPUT_POLARITY(__VALUE__) (((__VALUE__) == LL_LPTIM_OUTPUT_POLARITY_REGULAR) \
65 || ((__VALUE__) == LL_LPTIM_OUTPUT_POLARITY_INVERSE))
95ErrorStatus LL_LPTIM_DeInit(
const LPTIM_TypeDef *LPTIMx)
97 ErrorStatus result = SUCCESS;
102 if (LPTIMx == LPTIM1)
104 LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_LPTIM1);
105 LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_LPTIM1);
121void LL_LPTIM_StructInit(LL_LPTIM_InitTypeDef *LPTIM_InitStruct)
124 LPTIM_InitStruct->ClockSource = LL_LPTIM_CLK_SOURCE_INTERNAL;
125 LPTIM_InitStruct->Prescaler = LL_LPTIM_PRESCALER_DIV1;
126 LPTIM_InitStruct->Waveform = LL_LPTIM_OUTPUT_WAVEFORM_PWM;
127 LPTIM_InitStruct->Polarity = LL_LPTIM_OUTPUT_POLARITY_REGULAR;
140ErrorStatus LL_LPTIM_Init(LPTIM_TypeDef *LPTIMx,
const LL_LPTIM_InitTypeDef *LPTIM_InitStruct)
142 ErrorStatus result = SUCCESS;
145 assert_param(IS_LL_LPTIM_CLOCK_SOURCE(LPTIM_InitStruct->ClockSource));
146 assert_param(IS_LL_LPTIM_CLOCK_PRESCALER(LPTIM_InitStruct->Prescaler));
147 assert_param(IS_LL_LPTIM_WAVEFORM(LPTIM_InitStruct->Waveform));
148 assert_param(IS_LL_LPTIM_OUTPUT_POLARITY(LPTIM_InitStruct->Polarity));
153 if (LL_LPTIM_IsEnabled(LPTIMx) == 1UL)
163 MODIFY_REG(LPTIMx->CFGR,
164 (LPTIM_CFGR_CKSEL | LPTIM_CFGR_PRESC | LPTIM_CFGR_WAVE | LPTIM_CFGR_WAVPOL),
165 LPTIM_InitStruct->ClockSource | \
166 LPTIM_InitStruct->Prescaler | \
167 LPTIM_InitStruct->Waveform | \
168 LPTIM_InitStruct->Polarity);
183void LL_LPTIM_Disable(LPTIM_TypeDef *LPTIMx)
185 LL_RCC_ClocksTypeDef rcc_clock;
186 uint32_t tmpclksource = 0;
191 uint32_t primask_bit;
198 primask_bit = __get_PRIMASK();
203 switch ((uint32_t)LPTIMx)
206 tmpclksource = LL_RCC_GetLPTIMClockSource(LL_RCC_LPTIM1_CLKSOURCE);
213 tmpIER = LPTIMx->IER;
214 tmpCFGR = LPTIMx->CFGR;
215 tmpCMP = LPTIMx->CMP;
216 tmpARR = LPTIMx->ARR;
220 (void)LL_LPTIM_DeInit(LPTIMx);
223 LL_RCC_GetSystemClocksFreq(&rcc_clock);
225 if ((tmpCMP != 0UL) || (tmpARR != 0UL))
228 switch ((uint32_t)LPTIMx)
231 LL_RCC_SetLPTIMClockSource(LL_RCC_LPTIM1_CLKSOURCE_PCLK1);
240 LPTIMx->CR |= LPTIM_CR_ENABLE;
241 LPTIMx->CMP = tmpCMP;
246 rcc_clock.SYSCLK_Frequency--;
247 }
while (((LL_LPTIM_IsActiveFlag_CMPOK(LPTIMx) != 1UL)) && ((rcc_clock.SYSCLK_Frequency) > 0UL));
249 LL_LPTIM_ClearFlag_CMPOK(LPTIMx);
254 LPTIMx->CR |= LPTIM_CR_ENABLE;
255 LPTIMx->ARR = tmpARR;
257 LL_RCC_GetSystemClocksFreq(&rcc_clock);
261 rcc_clock.SYSCLK_Frequency--;
262 }
while (((LL_LPTIM_IsActiveFlag_ARROK(LPTIMx) != 1UL)) && ((rcc_clock.SYSCLK_Frequency) > 0UL));
264 LL_LPTIM_ClearFlag_ARROK(LPTIMx);
269 LL_RCC_SetLPTIMClockSource(tmpclksource);
273 LPTIMx->CR &= ~(LPTIM_CR_ENABLE);
274 LPTIMx->IER = tmpIER;
275 LPTIMx->CFGR = tmpCFGR;
279 __set_PRIMASK(primask_bit);
#define assert_param(expr)
Header file of BUS LL module.
Header file of LPTIM LL module.
Header file of RCC LL module.