From 4c39135c94232e76011da8a055dd3eddd0031da2 Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Sat, 2 Sep 2017 09:00:49 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@10525 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/hal/ports/STM32/STM32F3xx/stm32_isr.c | 231 +++---------------------------- 1 file changed, 17 insertions(+), 214 deletions(-) (limited to 'os/hal/ports/STM32/STM32F3xx/stm32_isr.c') diff --git a/os/hal/ports/STM32/STM32F3xx/stm32_isr.c b/os/hal/ports/STM32/STM32F3xx/stm32_isr.c index 5220ca9f2..bfb969ce0 100644 --- a/os/hal/ports/STM32/STM32F3xx/stm32_isr.c +++ b/os/hal/ports/STM32/STM32F3xx/stm32_isr.c @@ -40,27 +40,19 @@ /* Driver local functions. */ /*===========================================================================*/ -#if HAL_USE_EXT -#define exti_serve_irq(pr, channel) { \ - \ - if ((pr) & (1U << (channel))) { \ - EXTD1.config->channels[channel].cb(&EXTD1, channel); \ - } \ -} -#elif HAL_USE_PAL #define exti_serve_irq(pr, channel) { \ \ if ((pr) & (1U << (channel))) { \ _pal_isr_code(channel); \ } \ } -#endif /*===========================================================================*/ /* Driver interrupt handlers. */ /*===========================================================================*/ -#if HAL_USE_PAL || HAL_USE_EXT || defined(__DOXYGEN__) +#if HAL_USE_PAL || defined(__DOXYGEN__) +#if !defined(STM32_DISABLE_EXTI0_HANDLER) /** * @brief EXTI[0] interrupt handler. * @@ -79,7 +71,9 @@ OSAL_IRQ_HANDLER(Vector58) { OSAL_IRQ_EPILOGUE(); } +#endif +#if !defined(STM32_DISABLE_EXTI1_HANDLER) /** * @brief EXTI[1] interrupt handler. * @@ -98,7 +92,9 @@ OSAL_IRQ_HANDLER(Vector5C) { OSAL_IRQ_EPILOGUE(); } +#endif +#if !defined(STM32_DISABLE_EXTI2_HANDLER) /** * @brief EXTI[2] interrupt handler. * @@ -117,7 +113,9 @@ OSAL_IRQ_HANDLER(Vector60) { OSAL_IRQ_EPILOGUE(); } +#endif +#if !defined(STM32_DISABLE_EXTI3_HANDLER) /** * @brief EXTI[3] interrupt handler. * @@ -136,7 +134,9 @@ OSAL_IRQ_HANDLER(Vector64) { OSAL_IRQ_EPILOGUE(); } +#endif +#if !defined(STM32_DISABLE_EXTI4_HANDLER) /** * @brief EXTI[4] interrupt handler. * @@ -155,7 +155,9 @@ OSAL_IRQ_HANDLER(Vector68) { OSAL_IRQ_EPILOGUE(); } +#endif +#if !defined(STM32_DISABLE_EXTI5_9_HANDLER) /** * @brief EXTI[5]...EXTI[9] interrupt handler. * @@ -179,7 +181,9 @@ OSAL_IRQ_HANDLER(Vector9C) { OSAL_IRQ_EPILOGUE(); } +#endif +#if !defined(STM32_DISABLE_EXTI10_15_HANDLER) /** * @brief EXTI[10]...EXTI[15] interrupt handler. * @@ -204,189 +208,9 @@ OSAL_IRQ_HANDLER(VectorE0) { OSAL_IRQ_EPILOGUE(); } - -#if HAL_USE_EXT || defined(__DOXYGEN__) -#if !defined(STM32_DISABLE_EXTI16_HANDLER) -/** - * @brief EXTI[16] interrupt handler (PVD). - * - * @isr - */ -OSAL_IRQ_HANDLER(Vector44) { - uint32_t pr; - - OSAL_IRQ_PROLOGUE(); - - pr = EXTI->PR; - pr &= EXTI->IMR & (1U << 16); - EXTI->PR = pr; - if (pr & (1U << 16)) - EXTD1.config->channels[16].cb(&EXTD1, 16); - - OSAL_IRQ_EPILOGUE(); -} #endif -#if !defined(STM32_DISABLE_EXTI17_HANDLER) -/** - * @brief EXTI[17] interrupt handler (RTC Alarm). - * - * @isr - */ -OSAL_IRQ_HANDLER(VectorE4) { - uint32_t pr; - - OSAL_IRQ_PROLOGUE(); - - pr = EXTI->PR; - pr &= EXTI->IMR & (1U << 17); - EXTI->PR = pr; - if (pr & (1U << 17)) - EXTD1.config->channels[17].cb(&EXTD1, 17); - - OSAL_IRQ_EPILOGUE(); -} -#endif - -#if !defined(STM32_DISABLE_EXTI18_HANDLER) && STM32_HAS_USB -/** - * @brief EXTI[18] interrupt handler (USB Wakeup). - * - * @isr - */ -OSAL_IRQ_HANDLER(VectorE8) { - uint32_t pr; - - OSAL_IRQ_PROLOGUE(); - - pr = EXTI->PR; - pr &= EXTI->IMR & (1U << 18); - EXTI->PR = pr; - if (pr & (1U << 18)) - EXTD1.config->channels[18].cb(&EXTD1, 18); - - OSAL_IRQ_EPILOGUE(); -} -#endif - -#if !defined(STM32_DISABLE_EXTI19_HANDLER) -/** - * @brief EXTI[19] interrupt handler (Tamper TimeStamp). - * - * @isr - */ -OSAL_IRQ_HANDLER(Vector48) { - uint32_t pr; - - OSAL_IRQ_PROLOGUE(); - - pr = EXTI->PR; - pr &= EXTI->IMR & (1U << 19); - EXTI->PR = pr; - if (pr & (1U << 19)) - EXTD1.config->channels[19].cb(&EXTD1, 19); - - OSAL_IRQ_EPILOGUE(); -} -#endif - -#if !defined(STM32_DISABLE_EXTI20_HANDLER) -/** - * @brief EXTI[20] interrupt handler (RTC Wakeup). - * - * @isr - */ -OSAL_IRQ_HANDLER(Vector4C) { - uint32_t pr; - - OSAL_IRQ_PROLOGUE(); - - pr = EXTI->PR; - pr &= EXTI->IMR & (1U << 20); - EXTI->PR = pr; - if (pr & (1U << 20)) - EXTD1.config->channels[20].cb(&EXTD1, 20); - - OSAL_IRQ_EPILOGUE(); -} -#endif - -#if !defined(STM32_DISABLE_EXTI21_22_29_HANDLER) -/** - * @brief EXTI[21],EXTI[22],EXTI[29] interrupt handler (COMP1, COMP2, COMP3). - * - * @isr - */ -OSAL_IRQ_HANDLER(Vector140) { - uint32_t pr; - - OSAL_IRQ_PROLOGUE(); - - pr = EXTI->PR; - pr &= EXTI->IMR & ((1U << 21) | (1U << 22) | (1U << 29)); - EXTI->PR = pr; - if (pr & (1U << 21)) - EXTD1.config->channels[21].cb(&EXTD1, 21); - if (pr & (1U << 22)) - EXTD1.config->channels[22].cb(&EXTD1, 22); - if (pr & (1U << 29)) - EXTD1.config->channels[29].cb(&EXTD1, 29); - - OSAL_IRQ_EPILOGUE(); -} -#endif - -#if !defined(STM32_DISABLE_EXTI30_32_HANDLER) -/** - * @brief EXTI[30]...EXTI[32] interrupt handler (COMP4, COMP5, COMP6). - * - * @isr - */ -OSAL_IRQ_HANDLER(Vector144) { - uint32_t pr; - - OSAL_IRQ_PROLOGUE(); - - pr = EXTI->PR; - pr &= EXTI->IMR & ((1U << 30) | (1U << 31)); - EXTI->PR = pr; - if (pr & (1U << 30)) - EXTD1.config->channels[30].cb(&EXTD1, 30); - if (pr & (1U << 31)) - EXTD1.config->channels[31].cb(&EXTD1, 31); - - pr = EXTI->PR2 & EXTI->IMR2 & (1U << 0); - EXTI->PR2 = pr; - if (pr & (1U << 0)) - EXTD1.config->channels[32].cb(&EXTD1, 32); - - OSAL_IRQ_EPILOGUE(); -} -#endif - -#if !defined(STM32_DISABLE_EXTI33_HANDLER) -/** - * @brief EXTI[33] interrupt handler (COMP7). - * - * @isr - */ -OSAL_IRQ_HANDLER(Vector148) { - uint32_t pr2; - - OSAL_IRQ_PROLOGUE(); - - pr2 = EXTI->PR2; - pr2 = EXTI->IMR & (1U << 1); - EXTI->PR2 = pr2; - if (pr2 & (1U << 1)) - EXTD1.config->channels[33].cb(&EXTD1, 33); - - OSAL_IRQ_EPILOGUE(); -} -#endif -#endif /* HAL_USE_EXT */ - -#endif /* HAL_USE_PAL || HAL_USE_EXT */ +#endif /* HAL_USE_PAL */ /*===========================================================================*/ /* Driver exported functions. */ @@ -399,7 +223,7 @@ OSAL_IRQ_HANDLER(Vector148) { */ void irqInit(void) { -#if HAL_USE_PAL || HAL_USE_EXT +#if HAL_USE_PAL nvicEnableVector(EXTI0_IRQn, STM32_IRQ_EXTI0_PRIORITY); nvicEnableVector(EXTI1_IRQn, STM32_IRQ_EXTI1_PRIORITY); nvicEnableVector(EXTI2_TSC_IRQn, STM32_IRQ_EXTI2_PRIORITY); @@ -407,13 +231,6 @@ void irqInit(void) { nvicEnableVector(EXTI4_IRQn, STM32_IRQ_EXTI4_PRIORITY); nvicEnableVector(EXTI9_5_IRQn, STM32_IRQ_EXTI5_9_PRIORITY); nvicEnableVector(EXTI15_10_IRQn, STM32_IRQ_EXTI10_15_PRIORITY); -#if HAL_USE_EXT - nvicEnableVector(PVD_PVM_IRQn, STM32_IRQ_EXTI1635_38_PRIORITY); - nvicEnableVector(RTC_Alarm_IRQn, STM32_IRQ_EXTI18_PRIORITY); - nvicEnableVector(TAMP_STAMP_IRQn, STM32_IRQ_EXTI19_PRIORITY); - nvicEnableVector(RTC_WKUP_IRQn, STM32_IRQ_EXTI20_PRIORITY); - nvicEnableVector(COMP_IRQn, STM32_IRQ_EXTI21_22_PRIORITY); -#endif #endif } @@ -424,7 +241,7 @@ void irqInit(void) { */ void irqDeinit(void) { -#if HAL_USE_PAL || HAL_USE_EXT +#if HAL_USE_PAL nvicDisableVector(EXTI0_IRQn); nvicDisableVector(EXTI1_IRQn); nvicDisableVector(EXTI2_TSC_IRQn); @@ -432,20 +249,6 @@ void irqDeinit(void) { nvicDisableVector(EXTI4_IRQn); nvicDisableVector(EXTI9_5_IRQn); nvicDisableVector(EXTI15_10_IRQn); -#if HAL_USE_EXT - nvicEnableVector(PVD_IRQn, STM32_IRQ_EXTI16_PRIORITY); - nvicEnableVector(RTC_Alarm_IRQn, STM32_IRQ_EXTI17_PRIORITY); -#if STM32_HAS_USB - nvicEnableVector(USBWakeUp_IRQn, STM32_IRQ_EXTI18_PRIORITY); -#endif - nvicEnableVector(TAMP_STAMP_IRQn, STM32_IRQ_EXTI19_PRIORITY); - nvicEnableVector(RTC_WKUP_IRQn, STM32_IRQ_EXTI20_PRIORITY); - nvicEnableVector(COMP1_2_3_IRQn, STM32_IRQ_EXTI21_22_29_PRIORITY); - nvicEnableVector(COMP4_5_6_IRQn, STM32_IRQ_EXTI30_32_PRIORITY); -#if STM32_EXTI_NUM_LINES >= 34 - nvicEnableVector(COMP7_IRQn, STM32_IRQ_EXTI33_PRIORITY); -#endif -#endif #endif } -- cgit v1.2.3