aboutsummaryrefslogtreecommitdiffstats
path: root/os/hal/ports/STM32/STM32F3xx/stm32_isr.c
diff options
context:
space:
mode:
authorGiovanni Di Sirio <gdisirio@gmail.com>2017-09-02 09:00:49 +0000
committerGiovanni Di Sirio <gdisirio@gmail.com>2017-09-02 09:00:49 +0000
commit4c39135c94232e76011da8a055dd3eddd0031da2 (patch)
treeee76d10993619a10aa18a413f264c67ac935b1ba /os/hal/ports/STM32/STM32F3xx/stm32_isr.c
parent0701f98135282457b20aef073b00e1f0cdda0c92 (diff)
downloadChibiOS-4c39135c94232e76011da8a055dd3eddd0031da2.tar.gz
ChibiOS-4c39135c94232e76011da8a055dd3eddd0031da2.tar.bz2
ChibiOS-4c39135c94232e76011da8a055dd3eddd0031da2.zip
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@10525 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/hal/ports/STM32/STM32F3xx/stm32_isr.c')
-rw-r--r--os/hal/ports/STM32/STM32F3xx/stm32_isr.c231
1 files changed, 17 insertions, 214 deletions
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
}