diff --git a/os/hal/include/st.h b/os/hal/include/st.h index 05d382d93..b2cb00543 100644 --- a/os/hal/include/st.h +++ b/os/hal/include/st.h @@ -111,6 +111,17 @@ * @api */ #define stGetAlarm() st_lld_get_alarm() + +/** + * @brief Determines if the alarm is active. + * + * @return The alarm status. + * @retval false if the alarm is not active. + * @retval true is the alarm is active + * + * @api + */ +#define stIsAlarmActive() st_lld_is_alarm_active() /** @} */ /*===========================================================================*/ diff --git a/os/hal/platforms/STM32/TIMv1/st_lld.h b/os/hal/platforms/STM32/TIMv1/st_lld.h index 882472cb2..fb067f202 100644 --- a/os/hal/platforms/STM32/TIMv1/st_lld.h +++ b/os/hal/platforms/STM32/TIMv1/st_lld.h @@ -128,6 +128,20 @@ static inline systime_t st_lld_get_alarm(void) { return (systime_t)STM32_TIM2->CCR[0]; } +/** + * @brief Determines if the alarm is active. + * + * @return The alarm status. + * @retval false if the alarm is not active. + * @retval true is the alarm is active + * + * @notapi + */ +static inline bool st_lld_is_alarm_active(void) { + + return (bool)((STM32_TIM2->DIER & STM32_TIM_DIER_CC1IE) != 0); +} + #endif /* _ST_LLD_H_ */ /** @} */ diff --git a/os/rt/include/chdebug.h b/os/rt/include/chdebug.h index ee49eec00..0fdc865eb 100644 --- a/os/rt/include/chdebug.h +++ b/os/rt/include/chdebug.h @@ -175,7 +175,7 @@ typedef struct { #endif /* !defined(chDbgCheck) */ #else /* !CH_DBG_ENABLE_CHECKS */ -#define chDbgCheck(c) {(void)(c);} +#define chDbgCheck(c) /*{(void)(c);}*/ #endif /* !CH_DBG_ENABLE_CHECKS */ #if CH_DBG_ENABLE_ASSERTS || defined(__DOXYGEN__) @@ -200,7 +200,7 @@ typedef struct { } #endif /* !defined(chDbgAssert) */ #else /* !CH_DBG_ENABLE_ASSERTS */ -#define chDbgAssert(c, r) {(void)(c);} +#define chDbgAssert(c, r) /*{(void)(c);}*/ #endif /* !CH_DBG_ENABLE_ASSERTS */ /** @} */ diff --git a/os/rt/ports/ARMCMx/chcore_timer.h b/os/rt/ports/ARMCMx/chcore_timer.h index 089ab2519..da3bd82de 100644 --- a/os/rt/ports/ARMCMx/chcore_timer.h +++ b/os/rt/ports/ARMCMx/chcore_timer.h @@ -37,6 +37,7 @@ #else /* !defined(CH_PORT_DO_NOT_USE_ST) */ +/* This is the only header in the HAL designed to be include-able alone.*/ #include "st.h" /*===========================================================================*/ @@ -90,6 +91,8 @@ static inline systime_t port_timer_get_time(void) { */ static inline void port_timer_start_alarm(systime_t time) { + chDbgAssert(stIsAlarmActive() == false, "already active"); + stStartAlarm(time); } @@ -100,6 +103,8 @@ static inline void port_timer_start_alarm(systime_t time) { */ static inline void port_timer_stop_alarm(void) { + chDbgAssert(stIsAlarmActive() != false, "not active"); + stStopAlarm(); } @@ -112,6 +117,8 @@ static inline void port_timer_stop_alarm(void) { */ static inline void port_timer_set_alarm(systime_t time) { + chDbgAssert(stIsAlarmActive() != false, "not active"); + stSetAlarm(time); } @@ -124,6 +131,8 @@ static inline void port_timer_set_alarm(systime_t time) { */ static inline systime_t port_timer_get_alarm(void) { + chDbgAssert(stIsAlarmActive() != false, "not active"); + return stGetAlarm(); }