summaryrefslogtreecommitdiffstatshomepage
path: root/stmhal/stm32_it.c
diff options
context:
space:
mode:
Diffstat (limited to 'stmhal/stm32_it.c')
-rw-r--r--stmhal/stm32_it.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/stmhal/stm32_it.c b/stmhal/stm32_it.c
index 5f96c6083b..371d20dd7c 100644
--- a/stmhal/stm32_it.c
+++ b/stmhal/stm32_it.c
@@ -277,6 +277,12 @@ void SysTick_Handler(void) {
// be generalised in the future then a dispatch table can be used as
// follows: ((void(*)(void))(systick_dispatch[uwTick & 0xf]))();
+ #if defined(MICROPY_HW_USE_ALT_IRQ_FOR_CDC)
+ if (((uwTick) & 7) == 4) { // every 8ms
+ NVIC->STIR = PVD_IRQn;
+ }
+ #endif
+
if (STORAGE_IDLE_TICK(uwTick)) {
NVIC->STIR = FLASH_IRQn;
}
@@ -425,6 +431,10 @@ void EXTI15_10_IRQHandler(void) {
}
void PVD_IRQHandler(void) {
+ #if defined(MICROPY_HW_USE_ALT_IRQ_FOR_CDC)
+ extern void USBD_CDC_HAL_TIM_PeriodElapsedCallback(void);
+ USBD_CDC_HAL_TIM_PeriodElapsedCallback();
+ #endif
Handle_EXTI_Irq(EXTI_PVD_OUTPUT);
}
@@ -465,7 +475,11 @@ void TIM2_IRQHandler(void) {
}
void TIM3_IRQHandler(void) {
+ #if defined(MICROPY_HW_USE_ALT_IRQ_FOR_CDC)
+ timer_irq_handler(3);
+ #else
HAL_TIM_IRQHandler(&TIM3_Handle);
+ #endif
}
void TIM4_IRQHandler(void) {