168#ifdef HAL_LPTIM_MODULE_ENABLED
177#define TIMEOUT 1000UL
185#if (USE_HAL_LPTIM_REGISTER_CALLBACKS == 1)
186static void LPTIM_ResetCallback(LPTIM_HandleTypeDef *lptim);
188static HAL_StatusTypeDef LPTIM_WaitForFlag(
const LPTIM_HandleTypeDef *hlptim, uint32_t flag);
233 assert_param(IS_LPTIM_CLOCK_SOURCE(hlptim->Init.Clock.Source));
234 assert_param(IS_LPTIM_CLOCK_PRESCALER(hlptim->Init.Clock.Prescaler));
235 if ((hlptim->Init.Clock.Source == LPTIM_CLOCKSOURCE_ULPTIM)
236 || (hlptim->Init.CounterSource == LPTIM_COUNTERSOURCE_EXTERNAL))
238 assert_param(IS_LPTIM_CLOCK_POLARITY(hlptim->Init.UltraLowPowerClock.Polarity));
239 assert_param(IS_LPTIM_CLOCK_SAMPLE_TIME(hlptim->Init.UltraLowPowerClock.SampleTime));
241 assert_param(IS_LPTIM_TRG_SOURCE(hlptim->Init.Trigger.Source));
242 if (hlptim->Init.Trigger.Source != LPTIM_TRIGSOURCE_SOFTWARE)
244 assert_param(IS_LPTIM_EXT_TRG_POLARITY(hlptim->Init.Trigger.ActiveEdge));
245 assert_param(IS_LPTIM_TRIG_SAMPLE_TIME(hlptim->Init.Trigger.SampleTime));
247 assert_param(IS_LPTIM_OUTPUT_POLARITY(hlptim->Init.OutputPolarity));
248 assert_param(IS_LPTIM_UPDATE_MODE(hlptim->Init.UpdateMode));
249 assert_param(IS_LPTIM_COUNTER_SOURCE(hlptim->Init.CounterSource));
251 if (hlptim->State == HAL_LPTIM_STATE_RESET)
256#if (USE_HAL_LPTIM_REGISTER_CALLBACKS == 1)
258 LPTIM_ResetCallback(hlptim);
260 if (hlptim->MspInitCallback == NULL)
262 hlptim->MspInitCallback = HAL_LPTIM_MspInit;
266 hlptim->MspInitCallback(hlptim);
269 HAL_LPTIM_MspInit(hlptim);
274 hlptim->State = HAL_LPTIM_STATE_BUSY;
277 tmpcfgr = hlptim->Instance->CFGR;
279 if ((hlptim->Init.Clock.Source == LPTIM_CLOCKSOURCE_ULPTIM)
280 || (hlptim->Init.CounterSource == LPTIM_COUNTERSOURCE_EXTERNAL))
282 tmpcfgr &= (uint32_t)(~(LPTIM_CFGR_CKPOL | LPTIM_CFGR_CKFLT));
284 if (hlptim->Init.Trigger.Source != LPTIM_TRIGSOURCE_SOFTWARE)
286 tmpcfgr &= (uint32_t)(~(LPTIM_CFGR_TRGFLT | LPTIM_CFGR_TRIGSEL));
290 tmpcfgr &= (uint32_t)(~(LPTIM_CFGR_CKSEL | LPTIM_CFGR_TRIGEN | LPTIM_CFGR_PRELOAD |
291 LPTIM_CFGR_WAVPOL | LPTIM_CFGR_PRESC | LPTIM_CFGR_COUNTMODE));
294 tmpcfgr |= (hlptim->Init.Clock.Source |
295 hlptim->Init.Clock.Prescaler |
296 hlptim->Init.OutputPolarity |
297 hlptim->Init.UpdateMode |
298 hlptim->Init.CounterSource);
303 if (hlptim->Init.Clock.Source == LPTIM_CLOCKSOURCE_APBCLOCK_LPOSC)
305 tmpcfgr |= (hlptim->Init.Trigger.SampleTime |
306 hlptim->Init.UltraLowPowerClock.SampleTime);
310 if ((hlptim->Init.Clock.Source == LPTIM_CLOCKSOURCE_ULPTIM)
311 || (hlptim->Init.CounterSource == LPTIM_COUNTERSOURCE_EXTERNAL))
313 tmpcfgr |= (hlptim->Init.UltraLowPowerClock.Polarity |
314 hlptim->Init.UltraLowPowerClock.SampleTime);
318 if (hlptim->Init.Trigger.Source != LPTIM_TRIGSOURCE_SOFTWARE)
321 tmpcfgr |= (hlptim->Init.Trigger.Source |
322 hlptim->Init.Trigger.ActiveEdge |
323 hlptim->Init.Trigger.SampleTime);
327 hlptim->Instance->CFGR = tmpcfgr;
330 hlptim->State = HAL_LPTIM_STATE_READY;
350 hlptim->State = HAL_LPTIM_STATE_BUSY;
353 __HAL_LPTIM_DISABLE(hlptim);
355 if (HAL_LPTIM_GetState(hlptim) == HAL_LPTIM_STATE_TIMEOUT)
360#if (USE_HAL_LPTIM_REGISTER_CALLBACKS == 1)
361 if (hlptim->MspDeInitCallback == NULL)
363 hlptim->MspDeInitCallback = HAL_LPTIM_MspDeInit;
367 hlptim->MspDeInitCallback(hlptim);
370 HAL_LPTIM_MspDeInit(hlptim);
374 hlptim->State = HAL_LPTIM_STATE_RESET;
388__weak
void HAL_LPTIM_MspInit(LPTIM_HandleTypeDef *hlptim)
403__weak
void HAL_LPTIM_MspDeInit(LPTIM_HandleTypeDef *hlptim)
452HAL_StatusTypeDef HAL_LPTIM_PWM_Start(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Pulse)
460 hlptim->State = HAL_LPTIM_STATE_BUSY;
463 hlptim->Instance->CFGR &= ~LPTIM_CFGR_WAVE;
466 __HAL_LPTIM_ENABLE(hlptim);
469 __HAL_LPTIM_CLEAR_FLAG(hlptim, LPTIM_FLAG_ARROK);
472 __HAL_LPTIM_AUTORELOAD_SET(hlptim, Period);
475 if (LPTIM_WaitForFlag(hlptim, LPTIM_FLAG_ARROK) ==
HAL_TIMEOUT)
481 __HAL_LPTIM_CLEAR_FLAG(hlptim, LPTIM_FLAG_CMPOK);
484 __HAL_LPTIM_COMPARE_SET(hlptim, Pulse);
487 if (LPTIM_WaitForFlag(hlptim, LPTIM_FLAG_CMPOK) ==
HAL_TIMEOUT)
493 __HAL_LPTIM_START_CONTINUOUS(hlptim);
496 hlptim->State = HAL_LPTIM_STATE_READY;
513 hlptim->State = HAL_LPTIM_STATE_BUSY;
516 __HAL_LPTIM_DISABLE(hlptim);
518 if (HAL_LPTIM_GetState(hlptim) == HAL_LPTIM_STATE_TIMEOUT)
524 hlptim->State = HAL_LPTIM_STATE_READY;
539HAL_StatusTypeDef HAL_LPTIM_PWM_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Pulse)
547 hlptim->State = HAL_LPTIM_STATE_BUSY;
550 hlptim->Instance->CFGR &= ~LPTIM_CFGR_WAVE;
553 __HAL_LPTIM_ENABLE(hlptim);
556 __HAL_LPTIM_CLEAR_FLAG(hlptim, LPTIM_FLAG_ARROK);
559 __HAL_LPTIM_AUTORELOAD_SET(hlptim, Period);
562 if (LPTIM_WaitForFlag(hlptim, LPTIM_FLAG_ARROK) ==
HAL_TIMEOUT)
568 __HAL_LPTIM_CLEAR_FLAG(hlptim, LPTIM_FLAG_CMPOK);
571 __HAL_LPTIM_COMPARE_SET(hlptim, Pulse);
574 if (LPTIM_WaitForFlag(hlptim, LPTIM_FLAG_CMPOK) ==
HAL_TIMEOUT)
580 __HAL_LPTIM_DISABLE(hlptim);
582 if (HAL_LPTIM_GetState(hlptim) == HAL_LPTIM_STATE_TIMEOUT)
588 __HAL_LPTIM_ENABLE_IT(hlptim, LPTIM_IT_ARROK);
591 __HAL_LPTIM_ENABLE_IT(hlptim, LPTIM_IT_CMPOK);
594 __HAL_LPTIM_ENABLE_IT(hlptim, LPTIM_IT_ARRM);
597 __HAL_LPTIM_ENABLE_IT(hlptim, LPTIM_IT_CMPM);
600 if ((hlptim->Init.Trigger.Source) != LPTIM_TRIGSOURCE_SOFTWARE)
603 __HAL_LPTIM_ENABLE_IT(hlptim, LPTIM_IT_EXTTRIG);
607 __HAL_LPTIM_ENABLE(hlptim);
610 __HAL_LPTIM_START_CONTINUOUS(hlptim);
613 hlptim->State = HAL_LPTIM_STATE_READY;
630 hlptim->State = HAL_LPTIM_STATE_BUSY;
633 __HAL_LPTIM_DISABLE(hlptim);
635 if (HAL_LPTIM_GetState(hlptim) == HAL_LPTIM_STATE_TIMEOUT)
641 __HAL_LPTIM_DISABLE_IT(hlptim, LPTIM_IT_ARROK);
644 __HAL_LPTIM_DISABLE_IT(hlptim, LPTIM_IT_CMPOK);
647 __HAL_LPTIM_DISABLE_IT(hlptim, LPTIM_IT_ARRM);
650 __HAL_LPTIM_DISABLE_IT(hlptim, LPTIM_IT_CMPM);
653 if ((hlptim->Init.Trigger.Source) != LPTIM_TRIGSOURCE_SOFTWARE)
656 __HAL_LPTIM_DISABLE_IT(hlptim, LPTIM_IT_EXTTRIG);
660 hlptim->State = HAL_LPTIM_STATE_READY;
675HAL_StatusTypeDef HAL_LPTIM_OnePulse_Start(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Pulse)
683 hlptim->State = HAL_LPTIM_STATE_BUSY;
686 hlptim->Instance->CFGR &= ~LPTIM_CFGR_WAVE;
689 __HAL_LPTIM_ENABLE(hlptim);
692 __HAL_LPTIM_CLEAR_FLAG(hlptim, LPTIM_FLAG_ARROK);
695 __HAL_LPTIM_AUTORELOAD_SET(hlptim, Period);
698 if (LPTIM_WaitForFlag(hlptim, LPTIM_FLAG_ARROK) ==
HAL_TIMEOUT)
704 __HAL_LPTIM_CLEAR_FLAG(hlptim, LPTIM_FLAG_CMPOK);
707 __HAL_LPTIM_COMPARE_SET(hlptim, Pulse);
710 if (LPTIM_WaitForFlag(hlptim, LPTIM_FLAG_CMPOK) ==
HAL_TIMEOUT)
716 __HAL_LPTIM_START_SINGLE(hlptim);
719 hlptim->State = HAL_LPTIM_STATE_READY;
736 hlptim->State = HAL_LPTIM_STATE_BUSY;
739 __HAL_LPTIM_DISABLE(hlptim);
741 if (HAL_LPTIM_GetState(hlptim) == HAL_LPTIM_STATE_TIMEOUT)
747 hlptim->State = HAL_LPTIM_STATE_READY;
762HAL_StatusTypeDef HAL_LPTIM_OnePulse_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Pulse)
770 hlptim->State = HAL_LPTIM_STATE_BUSY;
773 hlptim->Instance->CFGR &= ~LPTIM_CFGR_WAVE;
776 __HAL_LPTIM_ENABLE(hlptim);
779 __HAL_LPTIM_CLEAR_FLAG(hlptim, LPTIM_FLAG_ARROK);
782 __HAL_LPTIM_AUTORELOAD_SET(hlptim, Period);
785 if (LPTIM_WaitForFlag(hlptim, LPTIM_FLAG_ARROK) ==
HAL_TIMEOUT)
791 __HAL_LPTIM_CLEAR_FLAG(hlptim, LPTIM_FLAG_CMPOK);
794 __HAL_LPTIM_COMPARE_SET(hlptim, Pulse);
797 if (LPTIM_WaitForFlag(hlptim, LPTIM_FLAG_CMPOK) ==
HAL_TIMEOUT)
803 __HAL_LPTIM_DISABLE(hlptim);
805 if (HAL_LPTIM_GetState(hlptim) == HAL_LPTIM_STATE_TIMEOUT)
811 __HAL_LPTIM_ENABLE_IT(hlptim, LPTIM_IT_ARROK);
814 __HAL_LPTIM_ENABLE_IT(hlptim, LPTIM_IT_CMPOK);
817 __HAL_LPTIM_ENABLE_IT(hlptim, LPTIM_IT_ARRM);
820 __HAL_LPTIM_ENABLE_IT(hlptim, LPTIM_IT_CMPM);
823 if ((hlptim->Init.Trigger.Source) != LPTIM_TRIGSOURCE_SOFTWARE)
826 __HAL_LPTIM_ENABLE_IT(hlptim, LPTIM_IT_EXTTRIG);
830 __HAL_LPTIM_ENABLE(hlptim);
833 __HAL_LPTIM_START_SINGLE(hlptim);
836 hlptim->State = HAL_LPTIM_STATE_READY;
853 hlptim->State = HAL_LPTIM_STATE_BUSY;
857 __HAL_LPTIM_DISABLE(hlptim);
859 if (HAL_LPTIM_GetState(hlptim) == HAL_LPTIM_STATE_TIMEOUT)
865 __HAL_LPTIM_DISABLE_IT(hlptim, LPTIM_IT_ARROK);
868 __HAL_LPTIM_DISABLE_IT(hlptim, LPTIM_IT_CMPOK);
871 __HAL_LPTIM_DISABLE_IT(hlptim, LPTIM_IT_ARRM);
874 __HAL_LPTIM_DISABLE_IT(hlptim, LPTIM_IT_CMPM);
877 if ((hlptim->Init.Trigger.Source) != LPTIM_TRIGSOURCE_SOFTWARE)
880 __HAL_LPTIM_DISABLE_IT(hlptim, LPTIM_IT_EXTTRIG);
884 hlptim->State = HAL_LPTIM_STATE_READY;
899HAL_StatusTypeDef HAL_LPTIM_SetOnce_Start(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Pulse)
907 hlptim->State = HAL_LPTIM_STATE_BUSY;
910 hlptim->Instance->CFGR |= LPTIM_CFGR_WAVE;
913 __HAL_LPTIM_ENABLE(hlptim);
916 __HAL_LPTIM_CLEAR_FLAG(hlptim, LPTIM_FLAG_ARROK);
919 __HAL_LPTIM_AUTORELOAD_SET(hlptim, Period);
922 if (LPTIM_WaitForFlag(hlptim, LPTIM_FLAG_ARROK) ==
HAL_TIMEOUT)
928 __HAL_LPTIM_CLEAR_FLAG(hlptim, LPTIM_FLAG_CMPOK);
931 __HAL_LPTIM_COMPARE_SET(hlptim, Pulse);
934 if (LPTIM_WaitForFlag(hlptim, LPTIM_FLAG_CMPOK) ==
HAL_TIMEOUT)
940 __HAL_LPTIM_START_SINGLE(hlptim);
943 hlptim->State = HAL_LPTIM_STATE_READY;
960 hlptim->State = HAL_LPTIM_STATE_BUSY;
963 __HAL_LPTIM_DISABLE(hlptim);
965 if (HAL_LPTIM_GetState(hlptim) == HAL_LPTIM_STATE_TIMEOUT)
971 hlptim->State = HAL_LPTIM_STATE_READY;
986HAL_StatusTypeDef HAL_LPTIM_SetOnce_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Pulse)
994 hlptim->State = HAL_LPTIM_STATE_BUSY;
997 hlptim->Instance->CFGR |= LPTIM_CFGR_WAVE;
1000 __HAL_LPTIM_ENABLE(hlptim);
1003 __HAL_LPTIM_CLEAR_FLAG(hlptim, LPTIM_FLAG_ARROK);
1006 __HAL_LPTIM_AUTORELOAD_SET(hlptim, Period);
1009 if (LPTIM_WaitForFlag(hlptim, LPTIM_FLAG_ARROK) ==
HAL_TIMEOUT)
1015 __HAL_LPTIM_CLEAR_FLAG(hlptim, LPTIM_FLAG_CMPOK);
1018 __HAL_LPTIM_COMPARE_SET(hlptim, Pulse);
1021 if (LPTIM_WaitForFlag(hlptim, LPTIM_FLAG_CMPOK) ==
HAL_TIMEOUT)
1027 __HAL_LPTIM_DISABLE(hlptim);
1029 if (HAL_LPTIM_GetState(hlptim) == HAL_LPTIM_STATE_TIMEOUT)
1035 __HAL_LPTIM_ENABLE_IT(hlptim, LPTIM_IT_ARROK);
1038 __HAL_LPTIM_ENABLE_IT(hlptim, LPTIM_IT_CMPOK);
1041 __HAL_LPTIM_ENABLE_IT(hlptim, LPTIM_IT_ARRM);
1044 __HAL_LPTIM_ENABLE_IT(hlptim, LPTIM_IT_CMPM);
1047 if ((hlptim->Init.Trigger.Source) != LPTIM_TRIGSOURCE_SOFTWARE)
1050 __HAL_LPTIM_ENABLE_IT(hlptim, LPTIM_IT_EXTTRIG);
1054 __HAL_LPTIM_ENABLE(hlptim);
1057 __HAL_LPTIM_START_SINGLE(hlptim);
1060 hlptim->State = HAL_LPTIM_STATE_READY;
1077 hlptim->State = HAL_LPTIM_STATE_BUSY;
1080 __HAL_LPTIM_DISABLE(hlptim);
1082 if (HAL_LPTIM_GetState(hlptim) == HAL_LPTIM_STATE_TIMEOUT)
1088 __HAL_LPTIM_DISABLE_IT(hlptim, LPTIM_IT_ARROK);
1091 __HAL_LPTIM_DISABLE_IT(hlptim, LPTIM_IT_CMPOK);
1094 __HAL_LPTIM_DISABLE_IT(hlptim, LPTIM_IT_ARRM);
1097 __HAL_LPTIM_DISABLE_IT(hlptim, LPTIM_IT_CMPM);
1100 if ((hlptim->Init.Trigger.Source) != LPTIM_TRIGSOURCE_SOFTWARE)
1103 __HAL_LPTIM_DISABLE_IT(hlptim, LPTIM_IT_EXTTRIG);
1107 hlptim->State = HAL_LPTIM_STATE_READY;
1120HAL_StatusTypeDef HAL_LPTIM_Encoder_Start(LPTIM_HandleTypeDef *hlptim, uint32_t Period)
1127 assert_param(hlptim->Init.Clock.Source == LPTIM_CLOCKSOURCE_APBCLOCK_LPOSC);
1128 assert_param(hlptim->Init.Clock.Prescaler == LPTIM_PRESCALER_DIV1);
1129 assert_param(IS_LPTIM_CLOCK_POLARITY(hlptim->Init.UltraLowPowerClock.Polarity));
1132 hlptim->State = HAL_LPTIM_STATE_BUSY;
1135 tmpcfgr = hlptim->Instance->CFGR;
1138 tmpcfgr &= (uint32_t)(~LPTIM_CFGR_CKPOL);
1141 tmpcfgr |= hlptim->Init.UltraLowPowerClock.Polarity;
1144 hlptim->Instance->CFGR = tmpcfgr;
1147 hlptim->Instance->CFGR |= LPTIM_CFGR_ENC;
1150 __HAL_LPTIM_ENABLE(hlptim);
1153 __HAL_LPTIM_CLEAR_FLAG(hlptim, LPTIM_FLAG_ARROK);
1156 __HAL_LPTIM_AUTORELOAD_SET(hlptim, Period);
1159 if (LPTIM_WaitForFlag(hlptim, LPTIM_FLAG_ARROK) ==
HAL_TIMEOUT)
1165 __HAL_LPTIM_START_CONTINUOUS(hlptim);
1168 hlptim->State = HAL_LPTIM_STATE_READY;
1185 hlptim->State = HAL_LPTIM_STATE_BUSY;
1188 __HAL_LPTIM_DISABLE(hlptim);
1190 if (HAL_LPTIM_GetState(hlptim) == HAL_LPTIM_STATE_TIMEOUT)
1196 hlptim->Instance->CFGR &= ~LPTIM_CFGR_ENC;
1199 hlptim->State = HAL_LPTIM_STATE_READY;
1212HAL_StatusTypeDef HAL_LPTIM_Encoder_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period)
1219 assert_param(hlptim->Init.Clock.Source == LPTIM_CLOCKSOURCE_APBCLOCK_LPOSC);
1220 assert_param(hlptim->Init.Clock.Prescaler == LPTIM_PRESCALER_DIV1);
1221 assert_param(IS_LPTIM_CLOCK_POLARITY(hlptim->Init.UltraLowPowerClock.Polarity));
1224 hlptim->State = HAL_LPTIM_STATE_BUSY;
1228 tmpcfgr = hlptim->Instance->CFGR;
1231 tmpcfgr &= (uint32_t)(~LPTIM_CFGR_CKPOL);
1234 tmpcfgr |= hlptim->Init.UltraLowPowerClock.Polarity;
1237 hlptim->Instance->CFGR = tmpcfgr;
1240 hlptim->Instance->CFGR |= LPTIM_CFGR_ENC;
1243 __HAL_LPTIM_ENABLE(hlptim);
1246 __HAL_LPTIM_CLEAR_FLAG(hlptim, LPTIM_FLAG_ARROK);
1249 __HAL_LPTIM_AUTORELOAD_SET(hlptim, Period);
1252 if (LPTIM_WaitForFlag(hlptim, LPTIM_FLAG_ARROK) ==
HAL_TIMEOUT)
1258 __HAL_LPTIM_DISABLE(hlptim);
1260 if (HAL_LPTIM_GetState(hlptim) == HAL_LPTIM_STATE_TIMEOUT)
1266 __HAL_LPTIM_ENABLE_IT(hlptim, LPTIM_IT_DOWN);
1269 __HAL_LPTIM_ENABLE_IT(hlptim, LPTIM_IT_UP);
1272 __HAL_LPTIM_ENABLE(hlptim);
1275 __HAL_LPTIM_START_CONTINUOUS(hlptim);
1278 hlptim->State = HAL_LPTIM_STATE_READY;
1295 hlptim->State = HAL_LPTIM_STATE_BUSY;
1298 __HAL_LPTIM_DISABLE(hlptim);
1300 if (HAL_LPTIM_GetState(hlptim) == HAL_LPTIM_STATE_TIMEOUT)
1306 hlptim->Instance->CFGR &= ~LPTIM_CFGR_ENC;
1309 __HAL_LPTIM_DISABLE_IT(hlptim, LPTIM_IT_DOWN);
1312 __HAL_LPTIM_DISABLE_IT(hlptim, LPTIM_IT_UP);
1315 hlptim->State = HAL_LPTIM_STATE_READY;
1332HAL_StatusTypeDef HAL_LPTIM_TimeOut_Start(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Timeout)
1340 hlptim->State = HAL_LPTIM_STATE_BUSY;
1343 hlptim->Instance->CFGR |= LPTIM_CFGR_TIMOUT;
1346 __HAL_LPTIM_ENABLE(hlptim);
1349 __HAL_LPTIM_CLEAR_FLAG(hlptim, LPTIM_FLAG_ARROK);
1352 __HAL_LPTIM_AUTORELOAD_SET(hlptim, Period);
1355 if (LPTIM_WaitForFlag(hlptim, LPTIM_FLAG_ARROK) ==
HAL_TIMEOUT)
1361 __HAL_LPTIM_CLEAR_FLAG(hlptim, LPTIM_FLAG_CMPOK);
1364 __HAL_LPTIM_COMPARE_SET(hlptim, Timeout);
1367 if (LPTIM_WaitForFlag(hlptim, LPTIM_FLAG_CMPOK) ==
HAL_TIMEOUT)
1373 __HAL_LPTIM_START_CONTINUOUS(hlptim);
1376 hlptim->State = HAL_LPTIM_STATE_READY;
1393 hlptim->State = HAL_LPTIM_STATE_BUSY;
1396 __HAL_LPTIM_DISABLE(hlptim);
1398 if (HAL_LPTIM_GetState(hlptim) == HAL_LPTIM_STATE_TIMEOUT)
1404 hlptim->Instance->CFGR &= ~LPTIM_CFGR_TIMOUT;
1407 hlptim->State = HAL_LPTIM_STATE_READY;
1424HAL_StatusTypeDef HAL_LPTIM_TimeOut_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Timeout)
1432 hlptim->State = HAL_LPTIM_STATE_BUSY;
1435 __HAL_LPTIM_WAKEUPTIMER_EXTI_ENABLE_IT();
1436#if defined(EXTI_IMR_MR23)
1438 __HAL_LPTIM_WAKEUPTIMER_EXTI_ENABLE_RISING_EDGE();
1442 hlptim->Instance->CFGR |= LPTIM_CFGR_TIMOUT;
1445 __HAL_LPTIM_ENABLE(hlptim);
1448 __HAL_LPTIM_CLEAR_FLAG(hlptim, LPTIM_FLAG_ARROK);
1451 __HAL_LPTIM_AUTORELOAD_SET(hlptim, Period);
1454 if (LPTIM_WaitForFlag(hlptim, LPTIM_FLAG_ARROK) ==
HAL_TIMEOUT)
1460 __HAL_LPTIM_CLEAR_FLAG(hlptim, LPTIM_FLAG_CMPOK);
1463 __HAL_LPTIM_COMPARE_SET(hlptim, Timeout);
1466 if (LPTIM_WaitForFlag(hlptim, LPTIM_FLAG_CMPOK) ==
HAL_TIMEOUT)
1472 __HAL_LPTIM_DISABLE(hlptim);
1474 if (HAL_LPTIM_GetState(hlptim) == HAL_LPTIM_STATE_TIMEOUT)
1480 __HAL_LPTIM_ENABLE_IT(hlptim, LPTIM_IT_CMPM);
1483 __HAL_LPTIM_ENABLE(hlptim);
1486 __HAL_LPTIM_START_CONTINUOUS(hlptim);
1489 hlptim->State = HAL_LPTIM_STATE_READY;
1505#if defined(EXTI_IMR_MR23)
1507 __HAL_LPTIM_WAKEUPTIMER_EXTI_DISABLE_RISING_EDGE();
1511 __HAL_LPTIM_WAKEUPTIMER_EXTI_DISABLE_IT();
1514 hlptim->State = HAL_LPTIM_STATE_BUSY;
1517 __HAL_LPTIM_DISABLE(hlptim);
1519 if (HAL_LPTIM_GetState(hlptim) == HAL_LPTIM_STATE_TIMEOUT)
1525 hlptim->Instance->CFGR &= ~LPTIM_CFGR_TIMOUT;
1528 __HAL_LPTIM_DISABLE_IT(hlptim, LPTIM_IT_CMPM);
1531 hlptim->State = HAL_LPTIM_STATE_READY;
1544HAL_StatusTypeDef HAL_LPTIM_Counter_Start(LPTIM_HandleTypeDef *hlptim, uint32_t Period)
1551 hlptim->State = HAL_LPTIM_STATE_BUSY;
1554 if ((hlptim->Init.Clock.Source != LPTIM_CLOCKSOURCE_ULPTIM)
1555 && (hlptim->Init.CounterSource == LPTIM_COUNTERSOURCE_EXTERNAL))
1558 assert_param(IS_LPTIM_CLOCK_PRESCALERDIV1(hlptim->Init.Clock.Prescaler));
1560 hlptim->Instance->CFGR &= ~LPTIM_CFGR_PRESC;
1564 __HAL_LPTIM_ENABLE(hlptim);
1567 __HAL_LPTIM_CLEAR_FLAG(hlptim, LPTIM_FLAG_ARROK);
1570 __HAL_LPTIM_AUTORELOAD_SET(hlptim, Period);
1573 if (LPTIM_WaitForFlag(hlptim, LPTIM_FLAG_ARROK) ==
HAL_TIMEOUT)
1579 __HAL_LPTIM_START_CONTINUOUS(hlptim);
1582 hlptim->State = HAL_LPTIM_STATE_READY;
1599 hlptim->State = HAL_LPTIM_STATE_BUSY;
1602 __HAL_LPTIM_DISABLE(hlptim);
1604 if (HAL_LPTIM_GetState(hlptim) == HAL_LPTIM_STATE_TIMEOUT)
1610 hlptim->State = HAL_LPTIM_STATE_READY;
1623HAL_StatusTypeDef HAL_LPTIM_Counter_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period)
1630 hlptim->State = HAL_LPTIM_STATE_BUSY;
1633 __HAL_LPTIM_WAKEUPTIMER_EXTI_ENABLE_IT();
1634#if defined(EXTI_IMR_MR23)
1636 __HAL_LPTIM_WAKEUPTIMER_EXTI_ENABLE_RISING_EDGE();
1640 if ((hlptim->Init.Clock.Source != LPTIM_CLOCKSOURCE_ULPTIM)
1641 && (hlptim->Init.CounterSource == LPTIM_COUNTERSOURCE_EXTERNAL))
1644 assert_param(IS_LPTIM_CLOCK_PRESCALERDIV1(hlptim->Init.Clock.Prescaler));
1646 hlptim->Instance->CFGR &= ~LPTIM_CFGR_PRESC;
1650 __HAL_LPTIM_ENABLE(hlptim);
1653 __HAL_LPTIM_CLEAR_FLAG(hlptim, LPTIM_FLAG_ARROK);
1656 __HAL_LPTIM_AUTORELOAD_SET(hlptim, Period);
1659 if (LPTIM_WaitForFlag(hlptim, LPTIM_FLAG_ARROK) ==
HAL_TIMEOUT)
1665 __HAL_LPTIM_DISABLE(hlptim);
1667 if (HAL_LPTIM_GetState(hlptim) == HAL_LPTIM_STATE_TIMEOUT)
1673 __HAL_LPTIM_ENABLE_IT(hlptim, LPTIM_IT_ARROK);
1676 __HAL_LPTIM_ENABLE_IT(hlptim, LPTIM_IT_ARRM);
1679 __HAL_LPTIM_ENABLE(hlptim);
1682 __HAL_LPTIM_START_CONTINUOUS(hlptim);
1685 hlptim->State = HAL_LPTIM_STATE_READY;
1701#if defined(EXTI_IMR_MR23)
1703 __HAL_LPTIM_WAKEUPTIMER_EXTI_DISABLE_RISING_EDGE();
1707 __HAL_LPTIM_WAKEUPTIMER_EXTI_DISABLE_IT();
1710 hlptim->State = HAL_LPTIM_STATE_BUSY;
1713 __HAL_LPTIM_DISABLE(hlptim);
1715 if (HAL_LPTIM_GetState(hlptim) == HAL_LPTIM_STATE_TIMEOUT)
1721 __HAL_LPTIM_DISABLE_IT(hlptim, LPTIM_IT_ARROK);
1724 __HAL_LPTIM_DISABLE_IT(hlptim, LPTIM_IT_ARRM);
1726 hlptim->State = HAL_LPTIM_STATE_READY;
1756uint32_t HAL_LPTIM_ReadCounter(
const LPTIM_HandleTypeDef *hlptim)
1761 return (hlptim->Instance->CNT);
1769uint32_t HAL_LPTIM_ReadAutoReload(
const LPTIM_HandleTypeDef *hlptim)
1774 return (hlptim->Instance->ARR);
1782uint32_t HAL_LPTIM_ReadCompare(
const LPTIM_HandleTypeDef *hlptim)
1787 return (hlptim->Instance->CMP);
1821void HAL_LPTIM_IRQHandler(LPTIM_HandleTypeDef *hlptim)
1824 if (__HAL_LPTIM_GET_FLAG(hlptim, LPTIM_FLAG_CMPM) != RESET)
1826 if (__HAL_LPTIM_GET_IT_SOURCE(hlptim, LPTIM_IT_CMPM) != RESET)
1829 __HAL_LPTIM_CLEAR_FLAG(hlptim, LPTIM_FLAG_CMPM);
1832#if (USE_HAL_LPTIM_REGISTER_CALLBACKS == 1)
1833 hlptim->CompareMatchCallback(hlptim);
1835 HAL_LPTIM_CompareMatchCallback(hlptim);
1841 if (__HAL_LPTIM_GET_FLAG(hlptim, LPTIM_FLAG_ARRM) != RESET)
1843 if (__HAL_LPTIM_GET_IT_SOURCE(hlptim, LPTIM_IT_ARRM) != RESET)
1846 __HAL_LPTIM_CLEAR_FLAG(hlptim, LPTIM_FLAG_ARRM);
1849#if (USE_HAL_LPTIM_REGISTER_CALLBACKS == 1)
1850 hlptim->AutoReloadMatchCallback(hlptim);
1852 HAL_LPTIM_AutoReloadMatchCallback(hlptim);
1858 if (__HAL_LPTIM_GET_FLAG(hlptim, LPTIM_FLAG_EXTTRIG) != RESET)
1860 if (__HAL_LPTIM_GET_IT_SOURCE(hlptim, LPTIM_IT_EXTTRIG) != RESET)
1863 __HAL_LPTIM_CLEAR_FLAG(hlptim, LPTIM_FLAG_EXTTRIG);
1866#if (USE_HAL_LPTIM_REGISTER_CALLBACKS == 1)
1867 hlptim->TriggerCallback(hlptim);
1869 HAL_LPTIM_TriggerCallback(hlptim);
1875 if (__HAL_LPTIM_GET_FLAG(hlptim, LPTIM_FLAG_CMPOK) != RESET)
1877 if (__HAL_LPTIM_GET_IT_SOURCE(hlptim, LPTIM_IT_CMPOK) != RESET)
1880 __HAL_LPTIM_CLEAR_FLAG(hlptim, LPTIM_FLAG_CMPOK);
1883#if (USE_HAL_LPTIM_REGISTER_CALLBACKS == 1)
1884 hlptim->CompareWriteCallback(hlptim);
1886 HAL_LPTIM_CompareWriteCallback(hlptim);
1892 if (__HAL_LPTIM_GET_FLAG(hlptim, LPTIM_FLAG_ARROK) != RESET)
1894 if (__HAL_LPTIM_GET_IT_SOURCE(hlptim, LPTIM_IT_ARROK) != RESET)
1897 __HAL_LPTIM_CLEAR_FLAG(hlptim, LPTIM_FLAG_ARROK);
1900#if (USE_HAL_LPTIM_REGISTER_CALLBACKS == 1)
1901 hlptim->AutoReloadWriteCallback(hlptim);
1903 HAL_LPTIM_AutoReloadWriteCallback(hlptim);
1909 if (__HAL_LPTIM_GET_FLAG(hlptim, LPTIM_FLAG_UP) != RESET)
1911 if (__HAL_LPTIM_GET_IT_SOURCE(hlptim, LPTIM_IT_UP) != RESET)
1914 __HAL_LPTIM_CLEAR_FLAG(hlptim, LPTIM_FLAG_UP);
1917#if (USE_HAL_LPTIM_REGISTER_CALLBACKS == 1)
1918 hlptim->DirectionUpCallback(hlptim);
1920 HAL_LPTIM_DirectionUpCallback(hlptim);
1926 if (__HAL_LPTIM_GET_FLAG(hlptim, LPTIM_FLAG_DOWN) != RESET)
1928 if (__HAL_LPTIM_GET_IT_SOURCE(hlptim, LPTIM_IT_DOWN) != RESET)
1931 __HAL_LPTIM_CLEAR_FLAG(hlptim, LPTIM_FLAG_DOWN);
1934#if (USE_HAL_LPTIM_REGISTER_CALLBACKS == 1)
1935 hlptim->DirectionDownCallback(hlptim);
1937 HAL_LPTIM_DirectionDownCallback(hlptim);
1941#if defined(EXTI_IMR_MR23)
1942 __HAL_LPTIM_WAKEUPTIMER_EXTI_CLEAR_FLAG();
1951__weak
void HAL_LPTIM_CompareMatchCallback(LPTIM_HandleTypeDef *hlptim)
1966__weak
void HAL_LPTIM_AutoReloadMatchCallback(LPTIM_HandleTypeDef *hlptim)
1981__weak
void HAL_LPTIM_TriggerCallback(LPTIM_HandleTypeDef *hlptim)
1996__weak
void HAL_LPTIM_CompareWriteCallback(LPTIM_HandleTypeDef *hlptim)
2011__weak
void HAL_LPTIM_AutoReloadWriteCallback(LPTIM_HandleTypeDef *hlptim)
2026__weak
void HAL_LPTIM_DirectionUpCallback(LPTIM_HandleTypeDef *hlptim)
2041__weak
void HAL_LPTIM_DirectionDownCallback(LPTIM_HandleTypeDef *hlptim)
2051#if (USE_HAL_LPTIM_REGISTER_CALLBACKS == 1)
2070 HAL_LPTIM_CallbackIDTypeDef CallbackID,
2071 pLPTIM_CallbackTypeDef pCallback)
2075 if (pCallback == NULL)
2080 if (hlptim->State == HAL_LPTIM_STATE_READY)
2084 case HAL_LPTIM_MSPINIT_CB_ID :
2085 hlptim->MspInitCallback = pCallback;
2088 case HAL_LPTIM_MSPDEINIT_CB_ID :
2089 hlptim->MspDeInitCallback = pCallback;
2092 case HAL_LPTIM_COMPARE_MATCH_CB_ID :
2093 hlptim->CompareMatchCallback = pCallback;
2096 case HAL_LPTIM_AUTORELOAD_MATCH_CB_ID :
2097 hlptim->AutoReloadMatchCallback = pCallback;
2100 case HAL_LPTIM_TRIGGER_CB_ID :
2101 hlptim->TriggerCallback = pCallback;
2104 case HAL_LPTIM_COMPARE_WRITE_CB_ID :
2105 hlptim->CompareWriteCallback = pCallback;
2108 case HAL_LPTIM_AUTORELOAD_WRITE_CB_ID :
2109 hlptim->AutoReloadWriteCallback = pCallback;
2112 case HAL_LPTIM_DIRECTION_UP_CB_ID :
2113 hlptim->DirectionUpCallback = pCallback;
2116 case HAL_LPTIM_DIRECTION_DOWN_CB_ID :
2117 hlptim->DirectionDownCallback = pCallback;
2126 else if (hlptim->State == HAL_LPTIM_STATE_RESET)
2130 case HAL_LPTIM_MSPINIT_CB_ID :
2131 hlptim->MspInitCallback = pCallback;
2134 case HAL_LPTIM_MSPDEINIT_CB_ID :
2135 hlptim->MspDeInitCallback = pCallback;
2171 HAL_LPTIM_CallbackIDTypeDef CallbackID)
2175 if (hlptim->State == HAL_LPTIM_STATE_READY)
2179 case HAL_LPTIM_MSPINIT_CB_ID :
2181 hlptim->MspInitCallback = HAL_LPTIM_MspInit;
2184 case HAL_LPTIM_MSPDEINIT_CB_ID :
2186 hlptim->MspDeInitCallback = HAL_LPTIM_MspDeInit;
2189 case HAL_LPTIM_COMPARE_MATCH_CB_ID :
2191 hlptim->CompareMatchCallback = HAL_LPTIM_CompareMatchCallback;
2194 case HAL_LPTIM_AUTORELOAD_MATCH_CB_ID :
2196 hlptim->AutoReloadMatchCallback = HAL_LPTIM_AutoReloadMatchCallback;
2199 case HAL_LPTIM_TRIGGER_CB_ID :
2201 hlptim->TriggerCallback = HAL_LPTIM_TriggerCallback;
2204 case HAL_LPTIM_COMPARE_WRITE_CB_ID :
2206 hlptim->CompareWriteCallback = HAL_LPTIM_CompareWriteCallback;
2209 case HAL_LPTIM_AUTORELOAD_WRITE_CB_ID :
2211 hlptim->AutoReloadWriteCallback = HAL_LPTIM_AutoReloadWriteCallback;
2214 case HAL_LPTIM_DIRECTION_UP_CB_ID :
2216 hlptim->DirectionUpCallback = HAL_LPTIM_DirectionUpCallback;
2219 case HAL_LPTIM_DIRECTION_DOWN_CB_ID :
2221 hlptim->DirectionDownCallback = HAL_LPTIM_DirectionDownCallback;
2230 else if (hlptim->State == HAL_LPTIM_STATE_RESET)
2234 case HAL_LPTIM_MSPINIT_CB_ID :
2236 hlptim->MspInitCallback = HAL_LPTIM_MspInit;
2239 case HAL_LPTIM_MSPDEINIT_CB_ID :
2241 hlptim->MspDeInitCallback = HAL_LPTIM_MspDeInit;
2283HAL_LPTIM_StateTypeDef HAL_LPTIM_GetState(
const LPTIM_HandleTypeDef *hlptim)
2286 return hlptim->State;
2303#if (USE_HAL_LPTIM_REGISTER_CALLBACKS == 1)
2310static void LPTIM_ResetCallback(LPTIM_HandleTypeDef *lptim)
2313 lptim->CompareMatchCallback = HAL_LPTIM_CompareMatchCallback;
2314 lptim->AutoReloadMatchCallback = HAL_LPTIM_AutoReloadMatchCallback;
2315 lptim->TriggerCallback = HAL_LPTIM_TriggerCallback;
2316 lptim->CompareWriteCallback = HAL_LPTIM_CompareWriteCallback;
2317 lptim->AutoReloadWriteCallback = HAL_LPTIM_AutoReloadWriteCallback;
2318 lptim->DirectionUpCallback = HAL_LPTIM_DirectionUpCallback;
2319 lptim->DirectionDownCallback = HAL_LPTIM_DirectionDownCallback;
2330static HAL_StatusTypeDef LPTIM_WaitForFlag(
const LPTIM_HandleTypeDef *hlptim, uint32_t flag)
2333 uint32_t count = TIMEOUT * (SystemCoreClock / 20UL / 1000UL);
2341 }
while ((!(__HAL_LPTIM_GET_FLAG((hlptim), (flag)))) && (count != 0UL));
2355void LPTIM_Disable(LPTIM_HandleTypeDef *hlptim)
2357 uint32_t tmpclksource = 0;
2362 uint32_t primask_bit;
2366 primask_bit = __get_PRIMASK();
2371 switch ((uint32_t)hlptim->Instance)
2374 tmpclksource = __HAL_RCC_GET_LPTIM1_SOURCE();
2381 tmpIER = hlptim->Instance->IER;
2382 tmpCFGR = hlptim->Instance->CFGR;
2383 tmpCMP = hlptim->Instance->CMP;
2384 tmpARR = hlptim->Instance->ARR;
2385 tmpOR = hlptim->Instance->OR;
2388 switch ((uint32_t)hlptim->Instance)
2391 __HAL_RCC_LPTIM1_FORCE_RESET();
2392 __HAL_RCC_LPTIM1_RELEASE_RESET();
2399 if ((tmpCMP != 0UL) || (tmpARR != 0UL))
2402 switch ((uint32_t)hlptim->Instance)
2405 __HAL_RCC_LPTIM1_CONFIG(RCC_LPTIM1CLKSOURCE_PCLK1);
2414 hlptim->Instance->CR |= LPTIM_CR_ENABLE;
2415 hlptim->Instance->CMP = tmpCMP;
2418 if (LPTIM_WaitForFlag(hlptim, LPTIM_FLAG_CMPOK) ==
HAL_TIMEOUT)
2420 hlptim->State = HAL_LPTIM_STATE_TIMEOUT;
2422 __HAL_LPTIM_CLEAR_FLAG(hlptim, LPTIM_FLAG_CMPOK);
2428 hlptim->Instance->CR |= LPTIM_CR_ENABLE;
2429 hlptim->Instance->ARR = tmpARR;
2432 if (LPTIM_WaitForFlag(hlptim, LPTIM_FLAG_ARROK) ==
HAL_TIMEOUT)
2434 hlptim->State = HAL_LPTIM_STATE_TIMEOUT;
2437 __HAL_LPTIM_CLEAR_FLAG(hlptim, LPTIM_FLAG_ARROK);
2441 switch ((uint32_t)hlptim->Instance)
2444 __HAL_RCC_LPTIM1_CONFIG(tmpclksource);
2452 hlptim->Instance->CR &= ~(LPTIM_CR_ENABLE);
2453 hlptim->Instance->IER = tmpIER;
2454 hlptim->Instance->CFGR = tmpCFGR;
2455 hlptim->Instance->OR = tmpOR;
2458 __set_PRIMASK(primask_bit);
#define assert_param(expr)
This file contains all the functions prototypes for the HAL module driver.
HAL_StatusTypeDef
HAL Status structures definition.
#define __HAL_UNLOCK(__HANDLE__)