diff options
-rw-r--r-- | os/hal/ports/common/ARMCMx/nvic.c | 10 | ||||
-rw-r--r-- | os/hal/ports/common/ARMCMx/nvic.h | 1 |
2 files changed, 11 insertions, 0 deletions
diff --git a/os/hal/ports/common/ARMCMx/nvic.c b/os/hal/ports/common/ARMCMx/nvic.c index 8c9217333..93e74ca82 100644 --- a/os/hal/ports/common/ARMCMx/nvic.c +++ b/os/hal/ports/common/ARMCMx/nvic.c @@ -85,4 +85,14 @@ void nvicSetSystemHandlerPriority(uint32_t handler, uint32_t prio) { SCB->SHP[handler] = NVIC_PRIORITY_MASK(prio);
}
+/**
+ * @brief Clears a pending interrupt source.
+ *
+ * @param[in] n the interrupt number
+ */
+void nvicClearPending(uint32_t n) {
+
+ NVIC->ICPR[n >> 5] = 1 << (n & 0x1F);
+}
+
/** @} */
diff --git a/os/hal/ports/common/ARMCMx/nvic.h b/os/hal/ports/common/ARMCMx/nvic.h index dca4afb79..636cba3b1 100644 --- a/os/hal/ports/common/ARMCMx/nvic.h +++ b/os/hal/ports/common/ARMCMx/nvic.h @@ -78,6 +78,7 @@ extern "C" { void nvicEnableVector(uint32_t n, uint32_t prio);
void nvicDisableVector(uint32_t n);
void nvicSetSystemHandlerPriority(uint32_t handler, uint32_t prio);
+ void nvicClearPending(uint32_t n);
#ifdef __cplusplus
}
#endif
|