Skip to content

Commit 6b5f0ab

Browse files
authored
Merge pull request #1062 from sjasonsmith/PR/HardwareTimerPriority
Fixed setting HardwareTimer interrupt priority
2 parents 3a9c71c + ebf27ee commit 6b5f0ab

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

cores/arduino/HardwareTimer.cpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,6 @@
3535
/* Private Variables */
3636
timerObj_t *HardwareTimer_Handle[TIMER_NUM] = {NULL};
3737

38-
IRQn_Type getTimerUpIrq(TIM_TypeDef *tim);
39-
IRQn_Type getTimerCCIrq(TIM_TypeDef *tim);
40-
4138
/**
4239
* @brief HardwareTimer constructor: set default configuration values
4340
* @param Timer instance ex: TIM1, ...
@@ -913,6 +910,15 @@ void HardwareTimer::setPWM(uint32_t channel, PinName pin, uint32_t frequency, ui
913910
*/
914911
void HardwareTimer::setInterruptPriority(uint32_t preemptPriority, uint32_t subPriority)
915912
{
913+
// Set Update interrupt priority for immediate use
914+
HAL_NVIC_SetPriority(getTimerUpIrq(_timerObj.handle.Instance), preemptPriority, subPriority);
915+
916+
// Set Capture/Compare interrupt priority if timer provides a unique IRQ
917+
if (getTimerCCIrq(_timerObj.handle.Instance) != getTimerUpIrq(_timerObj.handle.Instance)) {
918+
HAL_NVIC_SetPriority(getTimerCCIrq(_timerObj.handle.Instance), preemptPriority, subPriority);
919+
}
920+
921+
// Store priority for use if timer is re-initialized
916922
_timerObj.preemptPriority = preemptPriority;
917923
_timerObj.subPriority = subPriority;
918924
}

0 commit comments

Comments
 (0)