Skip to content

Commit

Permalink
Fixed MCU running exception when CH_CFG_ST_TIMEDELTA is defined as 2
Browse files Browse the repository at this point in the history
  • Loading branch information
wb committed Jul 22, 2024
1 parent 17c34f2 commit 8571128
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 5 deletions.
10 changes: 5 additions & 5 deletions os/hal/ports/WB32/LLD/TIMv1/hal_st_lld.c
Original file line number Diff line number Diff line change
Expand Up @@ -243,22 +243,22 @@ void st_lld_serve_interrupt(void) {
#if OSAL_ST_MODE == OSAL_ST_MODE_FREERUNNING
#if ST_LLD_NUM_ALARMS > 1
if ((sr & TIM_SR_CC2IF) != 0U) {
if (st_callbacks[2] != NULL) {
st_callbacks[0](1U);
if (st_callbacks[1] != NULL) {
st_callbacks[1](1U);
}
}
#endif
#if ST_LLD_NUM_ALARMS > 2
if ((sr & TIM_SR_CC3IF) != 0U) {
if (st_callbacks[2] != NULL) {
st_callbacks[1](2U);
st_callbacks[2](2U);
}
}
#endif
#if ST_LLD_NUM_ALARMS > 3
if ((sr & TIM_SR_CC4IF) != 0U) {
if (st_callbacks[2] != NULL) {
st_callbacks[2](3U);
if (st_callbacks[3] != NULL) {
st_callbacks[3](3U);
}
}
#endif
Expand Down
6 changes: 6 additions & 0 deletions os/hal/ports/WB32/LLD/TIMv1/hal_st_lld.h
Original file line number Diff line number Diff line change
Expand Up @@ -225,8 +225,10 @@ static inline void st_lld_start_alarm(systime_t abstime) {
WB32_ST_TIM->SR = 0;
#if ST_LLD_NUM_ALARMS == 1
WB32_ST_TIM->DIER = WB32_TIM_DIER_CC1IE;
WB32_ST_TIM->CCER = WB32_TIM_CCER_CC1E;
#else
WB32_ST_TIM->DIER |= WB32_TIM_DIER_CC1IE;
WB32_ST_TIM->CCER |= WB32_TIM_CCER_CC1E;
#endif
}

Expand All @@ -239,8 +241,10 @@ static inline void st_lld_stop_alarm(void) {

#if ST_LLD_NUM_ALARMS == 1
WB32_ST_TIM->DIER = 0U;
WB32_ST_TIM->CCER = 0U;
#else
WB32_ST_TIM->DIER &= ~WB32_TIM_DIER_CC1IE;
WB32_ST_TIM->CCER &= ~WB32_TIM_CCER_CC1E;
#endif
}

Expand Down Expand Up @@ -300,6 +304,7 @@ static inline void st_lld_start_alarm_n(unsigned alarm, systime_t abstime) {
WB32_ST_TIM->CCR[alarm] = (uint32_t)abstime;
WB32_ST_TIM->SR = 0;
WB32_ST_TIM->DIER |= (WB32_TIM_DIER_CC1IE << alarm);
WB32_ST_TIM->DIER |= (WB32_TIM_CCER_CC1E << (alarm * 4));
}

/**
Expand All @@ -314,6 +319,7 @@ static inline void st_lld_start_alarm_n(unsigned alarm, systime_t abstime) {
static inline void st_lld_stop_alarm_n(unsigned alarm) {

WB32_ST_TIM->DIER &= ~(WB32_TIM_DIER_CC1IE << alarm);
WB32_ST_TIM->DIER &= ~(WB32_TIM_CCER_CC1E << (alarm * 4));
}

/**
Expand Down

0 comments on commit 8571128

Please sign in to comment.