Skip to content

Commit ebf27ee

Browse files
committed
Set priority for Capture/Compare if different IRQ than Update
1 parent 7ea6570 commit ebf27ee

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

cores/arduino/HardwareTimer.cpp

+7-2
Original file line numberDiff line numberDiff line change
@@ -910,8 +910,13 @@ void HardwareTimer::setPWM(uint32_t channel, PinName pin, uint32_t frequency, ui
910910
*/
911911
void HardwareTimer::setInterruptPriority(uint32_t preemptPriority, uint32_t subPriority)
912912
{
913-
// Set priority for immediate use
914-
NVIC_SetPriority(getTimerUpIrq(_timerObj.handle.Instance), NVIC_EncodePriority(NVIC_GetPriorityGrouping(), preemptPriority, subPriority));
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+
}
915920

916921
// Store priority for use if timer is re-initialized
917922
_timerObj.preemptPriority = preemptPriority;

0 commit comments

Comments
 (0)