168 #ifdef HAL_LPTIM_MODULE_ENABLED
177 #define TIMEOUT 1000UL
185 #if (USE_HAL_LPTIM_REGISTER_CALLBACKS == 1)
188 static HAL_StatusTypeDef LPTIM_WaitForFlag(
const LPTIM_HandleTypeDef *hlptim, uint32_t flag);
231 assert_param(IS_LPTIM_INSTANCE(hlptim->Instance));
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));
254 hlptim->Lock = HAL_UNLOCKED;
256 #if (USE_HAL_LPTIM_REGISTER_CALLBACKS == 1)
258 LPTIM_ResetCallback(hlptim);
260 if (hlptim->MspInitCallback == NULL)
266 hlptim->MspInitCallback(hlptim);
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;
353 __HAL_LPTIM_DISABLE(hlptim);
360 #if (USE_HAL_LPTIM_REGISTER_CALLBACKS == 1)
361 if (hlptim->MspDeInitCallback == NULL)
367 hlptim->MspDeInitCallback(hlptim);
377 __HAL_UNLOCK(hlptim);
455 assert_param(IS_LPTIM_INSTANCE(hlptim->Instance));
456 assert_param(IS_LPTIM_PERIOD(Period));
457 assert_param(IS_LPTIM_PULSE(Pulse));
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);
510 assert_param(IS_LPTIM_INSTANCE(hlptim->Instance));
516 __HAL_LPTIM_DISABLE(hlptim);
542 assert_param(IS_LPTIM_INSTANCE(hlptim->Instance));
543 assert_param(IS_LPTIM_PERIOD(Period));
544 assert_param(IS_LPTIM_PULSE(Pulse));
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);
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);
627 assert_param(IS_LPTIM_INSTANCE(hlptim->Instance));
633 __HAL_LPTIM_DISABLE(hlptim);
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);
678 assert_param(IS_LPTIM_INSTANCE(hlptim->Instance));
679 assert_param(IS_LPTIM_PERIOD(Period));
680 assert_param(IS_LPTIM_PULSE(Pulse));
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);
733 assert_param(IS_LPTIM_INSTANCE(hlptim->Instance));
739 __HAL_LPTIM_DISABLE(hlptim);
765 assert_param(IS_LPTIM_INSTANCE(hlptim->Instance));
766 assert_param(IS_LPTIM_PERIOD(Period));
767 assert_param(IS_LPTIM_PULSE(Pulse));
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);
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);
850 assert_param(IS_LPTIM_INSTANCE(hlptim->Instance));
857 __HAL_LPTIM_DISABLE(hlptim);
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);
902 assert_param(IS_LPTIM_INSTANCE(hlptim->Instance));
903 assert_param(IS_LPTIM_PERIOD(Period));
904 assert_param(IS_LPTIM_PULSE(Pulse));
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);
957 assert_param(IS_LPTIM_INSTANCE(hlptim->Instance));
963 __HAL_LPTIM_DISABLE(hlptim);
989 assert_param(IS_LPTIM_INSTANCE(hlptim->Instance));
990 assert_param(IS_LPTIM_PERIOD(Period));
991 assert_param(IS_LPTIM_PULSE(Pulse));
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);
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);
1074 assert_param(IS_LPTIM_INSTANCE(hlptim->Instance));
1080 __HAL_LPTIM_DISABLE(hlptim);
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);
1125 assert_param(IS_LPTIM_INSTANCE(hlptim->Instance));
1126 assert_param(IS_LPTIM_PERIOD(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));
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);
1182 assert_param(IS_LPTIM_INSTANCE(hlptim->Instance));
1188 __HAL_LPTIM_DISABLE(hlptim);
1196 hlptim->Instance->CFGR &= ~LPTIM_CFGR_ENC;
1217 assert_param(IS_LPTIM_INSTANCE(hlptim->Instance));
1218 assert_param(IS_LPTIM_PERIOD(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));
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);
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);
1292 assert_param(IS_LPTIM_INSTANCE(hlptim->Instance));
1298 __HAL_LPTIM_DISABLE(hlptim);
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);
1335 assert_param(IS_LPTIM_INSTANCE(hlptim->Instance));
1336 assert_param(IS_LPTIM_PERIOD(Period));
1337 assert_param(IS_LPTIM_PULSE(Timeout));
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);
1390 assert_param(IS_LPTIM_INSTANCE(hlptim->Instance));
1396 __HAL_LPTIM_DISABLE(hlptim);
1404 hlptim->Instance->CFGR &= ~LPTIM_CFGR_TIMOUT;
1427 assert_param(IS_LPTIM_INSTANCE(hlptim->Instance));
1428 assert_param(IS_LPTIM_PERIOD(Period));
1429 assert_param(IS_LPTIM_PULSE(Timeout));
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);
1480 __HAL_LPTIM_ENABLE_IT(hlptim, LPTIM_IT_CMPM);
1483 __HAL_LPTIM_ENABLE(hlptim);
1486 __HAL_LPTIM_START_CONTINUOUS(hlptim);
1503 assert_param(IS_LPTIM_INSTANCE(hlptim->Instance));
1505 #if defined(EXTI_IMR_MR23)
1507 __HAL_LPTIM_WAKEUPTIMER_EXTI_DISABLE_RISING_EDGE();
1511 __HAL_LPTIM_WAKEUPTIMER_EXTI_DISABLE_IT();
1517 __HAL_LPTIM_DISABLE(hlptim);
1525 hlptim->Instance->CFGR &= ~LPTIM_CFGR_TIMOUT;
1528 __HAL_LPTIM_DISABLE_IT(hlptim, LPTIM_IT_CMPM);
1547 assert_param(IS_LPTIM_INSTANCE(hlptim->Instance));
1548 assert_param(IS_LPTIM_PERIOD(Period));
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);
1596 assert_param(IS_LPTIM_INSTANCE(hlptim->Instance));
1602 __HAL_LPTIM_DISABLE(hlptim);
1626 assert_param(IS_LPTIM_INSTANCE(hlptim->Instance));
1627 assert_param(IS_LPTIM_PERIOD(Period));
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);
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);
1699 assert_param(IS_LPTIM_INSTANCE(hlptim->Instance));
1701 #if defined(EXTI_IMR_MR23)
1703 __HAL_LPTIM_WAKEUPTIMER_EXTI_DISABLE_RISING_EDGE();
1707 __HAL_LPTIM_WAKEUPTIMER_EXTI_DISABLE_IT();
1713 __HAL_LPTIM_DISABLE(hlptim);
1721 __HAL_LPTIM_DISABLE_IT(hlptim, LPTIM_IT_ARROK);
1724 __HAL_LPTIM_DISABLE_IT(hlptim, LPTIM_IT_ARRM);
1759 assert_param(IS_LPTIM_INSTANCE(hlptim->Instance));
1761 return (hlptim->Instance->CNT);
1772 assert_param(IS_LPTIM_INSTANCE(hlptim->Instance));
1774 return (hlptim->Instance->ARR);
1785 assert_param(IS_LPTIM_INSTANCE(hlptim->Instance));
1787 return (hlptim->Instance->CMP);
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);
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);
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);
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);
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);
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);
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);
1941 #if defined(EXTI_IMR_MR23)
1942 __HAL_LPTIM_WAKEUPTIMER_EXTI_CLEAR_FLAG();
2051 #if (USE_HAL_LPTIM_REGISTER_CALLBACKS == 1)
2073 HAL_StatusTypeDef status = HAL_OK;
2075 if (pCallback == NULL)
2085 hlptim->MspInitCallback = pCallback;
2089 hlptim->MspDeInitCallback = pCallback;
2093 hlptim->CompareMatchCallback = pCallback;
2097 hlptim->AutoReloadMatchCallback = pCallback;
2101 hlptim->TriggerCallback = pCallback;
2105 hlptim->CompareWriteCallback = pCallback;
2109 hlptim->AutoReloadWriteCallback = pCallback;
2113 hlptim->DirectionUpCallback = pCallback;
2117 hlptim->DirectionDownCallback = pCallback;
2131 hlptim->MspInitCallback = pCallback;
2135 hlptim->MspDeInitCallback = pCallback;
2173 HAL_StatusTypeDef status = HAL_OK;
2286 return hlptim->State;
2303 #if (USE_HAL_LPTIM_REGISTER_CALLBACKS == 1)
2330 static HAL_StatusTypeDef LPTIM_WaitForFlag(
const LPTIM_HandleTypeDef *hlptim, uint32_t flag)
2332 HAL_StatusTypeDef result = HAL_OK;
2333 uint32_t count = TIMEOUT * (SystemCoreClock / 20UL / 1000UL);
2339 result = HAL_TIMEOUT;
2341 }
while ((!(__HAL_LPTIM_GET_FLAG((hlptim), (flag)))) && (count != 0UL));
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)
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)
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);
void HAL_LPTIM_MspInit(LPTIM_HandleTypeDef *hlptim)
Initialize the LPTIM MSP.
HAL_StatusTypeDef HAL_LPTIM_DeInit(LPTIM_HandleTypeDef *hlptim)
DeInitialize the LPTIM peripheral.
void HAL_LPTIM_MspDeInit(LPTIM_HandleTypeDef *hlptim)
DeInitialize LPTIM MSP.
HAL_StatusTypeDef HAL_LPTIM_Init(LPTIM_HandleTypeDef *hlptim)
Initialize the LPTIM according to the specified parameters in the LPTIM_InitTypeDef and initialize th...
HAL_StatusTypeDef HAL_LPTIM_TimeOut_Start(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Timeout)
Start the Timeout function.
HAL_StatusTypeDef HAL_LPTIM_SetOnce_Stop(LPTIM_HandleTypeDef *hlptim)
Stop the LPTIM Set once mode.
HAL_StatusTypeDef HAL_LPTIM_Encoder_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period)
Start the Encoder interface in interrupt mode.
HAL_StatusTypeDef HAL_LPTIM_Encoder_Start(LPTIM_HandleTypeDef *hlptim, uint32_t Period)
Start the Encoder interface.
HAL_StatusTypeDef HAL_LPTIM_PWM_Stop(LPTIM_HandleTypeDef *hlptim)
Stop the LPTIM PWM generation.
HAL_StatusTypeDef HAL_LPTIM_TimeOut_Stop_IT(LPTIM_HandleTypeDef *hlptim)
Stop the Timeout function in interrupt mode.
HAL_StatusTypeDef HAL_LPTIM_PWM_Start(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Pulse)
Start the LPTIM PWM generation.
HAL_StatusTypeDef HAL_LPTIM_SetOnce_Stop_IT(LPTIM_HandleTypeDef *hlptim)
Stop the LPTIM Set once mode in interrupt mode.
HAL_StatusTypeDef HAL_LPTIM_SetOnce_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Pulse)
Start the LPTIM Set once mode in interrupt mode.
HAL_StatusTypeDef HAL_LPTIM_TimeOut_Stop(LPTIM_HandleTypeDef *hlptim)
Stop the Timeout function.
HAL_StatusTypeDef HAL_LPTIM_SetOnce_Start(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Pulse)
Start the LPTIM in Set once mode.
HAL_StatusTypeDef HAL_LPTIM_Counter_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period)
Start the Counter mode in interrupt mode.
HAL_StatusTypeDef HAL_LPTIM_OnePulse_Stop_IT(LPTIM_HandleTypeDef *hlptim)
Stop the LPTIM One pulse generation in interrupt mode.
HAL_StatusTypeDef HAL_LPTIM_PWM_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Pulse)
Start the LPTIM PWM generation in interrupt mode.
HAL_StatusTypeDef HAL_LPTIM_Counter_Start(LPTIM_HandleTypeDef *hlptim, uint32_t Period)
Start the Counter mode.
HAL_StatusTypeDef HAL_LPTIM_Counter_Stop(LPTIM_HandleTypeDef *hlptim)
Stop the Counter mode.
HAL_StatusTypeDef HAL_LPTIM_OnePulse_Stop(LPTIM_HandleTypeDef *hlptim)
Stop the LPTIM One pulse generation.
HAL_StatusTypeDef HAL_LPTIM_OnePulse_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Pulse)
Start the LPTIM One pulse generation in interrupt mode.
HAL_StatusTypeDef HAL_LPTIM_TimeOut_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Timeout)
Start the Timeout function in interrupt mode.
HAL_StatusTypeDef HAL_LPTIM_PWM_Stop_IT(LPTIM_HandleTypeDef *hlptim)
Stop the LPTIM PWM generation in interrupt mode.
HAL_StatusTypeDef HAL_LPTIM_Counter_Stop_IT(LPTIM_HandleTypeDef *hlptim)
Stop the Counter mode in interrupt mode.
HAL_StatusTypeDef HAL_LPTIM_Encoder_Stop(LPTIM_HandleTypeDef *hlptim)
Stop the Encoder interface.
HAL_StatusTypeDef HAL_LPTIM_Encoder_Stop_IT(LPTIM_HandleTypeDef *hlptim)
Stop the Encoder interface in interrupt mode.
HAL_StatusTypeDef HAL_LPTIM_OnePulse_Start(LPTIM_HandleTypeDef *hlptim, uint32_t Period, uint32_t Pulse)
Start the LPTIM One pulse generation.
uint32_t HAL_LPTIM_ReadAutoReload(const LPTIM_HandleTypeDef *hlptim)
Return the current Autoreload (Period) value.
uint32_t HAL_LPTIM_ReadCounter(const LPTIM_HandleTypeDef *hlptim)
Return the current counter value.
uint32_t HAL_LPTIM_ReadCompare(const LPTIM_HandleTypeDef *hlptim)
Return the current Compare (Pulse) value.
void HAL_LPTIM_DirectionDownCallback(LPTIM_HandleTypeDef *hlptim)
Direction counter changed from Up to Down callback in non-blocking mode.
void HAL_LPTIM_AutoReloadMatchCallback(LPTIM_HandleTypeDef *hlptim)
Autoreload match callback in non-blocking mode.
void HAL_LPTIM_AutoReloadWriteCallback(LPTIM_HandleTypeDef *hlptim)
Autoreload write callback in non-blocking mode.
void HAL_LPTIM_IRQHandler(LPTIM_HandleTypeDef *hlptim)
Handle LPTIM interrupt request.
void HAL_LPTIM_CompareMatchCallback(LPTIM_HandleTypeDef *hlptim)
Compare match callback in non-blocking mode.
void HAL_LPTIM_CompareWriteCallback(LPTIM_HandleTypeDef *hlptim)
Compare write callback in non-blocking mode.
void HAL_LPTIM_TriggerCallback(LPTIM_HandleTypeDef *hlptim)
Trigger detected callback in non-blocking mode.
HAL_StatusTypeDef HAL_LPTIM_UnRegisterCallback(LPTIM_HandleTypeDef *lphtim, HAL_LPTIM_CallbackIDTypeDef CallbackID)
Unregister a LPTIM callback LLPTIM callback is redirected to the weak predefined callback.
HAL_StatusTypeDef HAL_LPTIM_RegisterCallback(LPTIM_HandleTypeDef *lphtim, HAL_LPTIM_CallbackIDTypeDef CallbackID, pLPTIM_CallbackTypeDef pCallback)
Register a User LPTIM callback to be used instead of the weak predefined callback.
void HAL_LPTIM_DirectionUpCallback(LPTIM_HandleTypeDef *hlptim)
Direction counter changed from Down to Up callback in non-blocking mode.
struct __LPTIM_HandleTypeDef else typedef struct endif LPTIM_HandleTypeDef
LPTIM handle Structure definition.
HAL_LPTIM_StateTypeDef
HAL LPTIM State structure definition.
HAL_LPTIM_CallbackIDTypeDef
HAL LPTIM Callback ID enumeration definition.
void(* pLPTIM_CallbackTypeDef)(LPTIM_HandleTypeDef *hlptim)
HAL TIM Callback pointer definition.
@ HAL_LPTIM_STATE_TIMEOUT
@ HAL_LPTIM_DIRECTION_UP_CB_ID
@ HAL_LPTIM_COMPARE_MATCH_CB_ID
@ HAL_LPTIM_AUTORELOAD_WRITE_CB_ID
@ HAL_LPTIM_TRIGGER_CB_ID
@ HAL_LPTIM_AUTORELOAD_MATCH_CB_ID
@ HAL_LPTIM_MSPINIT_CB_ID
@ HAL_LPTIM_DIRECTION_DOWN_CB_ID
@ HAL_LPTIM_COMPARE_WRITE_CB_ID
@ HAL_LPTIM_MSPDEINIT_CB_ID
HAL_LPTIM_StateTypeDef HAL_LPTIM_GetState(const LPTIM_HandleTypeDef *hlptim)
Return the LPTIM handle state.
void LPTIM_Disable(LPTIM_HandleTypeDef *hlptim)
Disable LPTIM HW instance.
This file contains all the functions prototypes for the HAL module driver.