aboutsummaryrefslogtreecommitdiffstats
path: root/os/hal
diff options
context:
space:
mode:
authorGiovanni Di Sirio <gdisirio@gmail.com>2017-08-31 14:04:24 +0000
committerGiovanni Di Sirio <gdisirio@gmail.com>2017-08-31 14:04:24 +0000
commit424f88606831bf8645716b9cfce831b468cfca75 (patch)
treea9ec0ecab43e2ca267176cdd35d77134be33c6aa /os/hal
parentf400137e6fb5992253f884faf59e39e831766b0e (diff)
downloadChibiOS-424f88606831bf8645716b9cfce831b468cfca75.tar.gz
ChibiOS-424f88606831bf8645716b9cfce831b468cfca75.tar.bz2
ChibiOS-424f88606831bf8645716b9cfce831b468cfca75.zip
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@10514 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/hal')
-rw-r--r--os/hal/include/hal_pal.h66
-rw-r--r--os/hal/ports/STM32/STM32L4xx/hal_lld.c4
-rw-r--r--os/hal/ports/STM32/STM32L4xx/stm32_isr.c4
-rw-r--r--os/hal/ports/STM32/STM32L4xx/stm32_isr.h4
4 files changed, 74 insertions, 4 deletions
diff --git a/os/hal/include/hal_pal.h b/os/hal/include/hal_pal.h
index 6e305340e..ede48c470 100644
--- a/os/hal/include/hal_pal.h
+++ b/os/hal/include/hal_pal.h
@@ -608,6 +608,42 @@ typedef struct {
#endif
/**
+ * @brief Pad event enable.
+ * @details This function programs an event callback in the specified mode.
+ * @note Programming an unknown or unsupported mode is silently ignored.
+ *
+ * @param[in] port port identifier
+ * @param[in] pad pad number within the port
+ * @param[in] mode pad event mode
+ * @param[in] callback event callback function
+ * @param[in] arg callback argument
+ *
+ * @api
+ */
+#define palPadEnableEvent(port, pad, mode, callback, arg) \
+ do { \
+ osalSysLock(); \
+ palPadEnableEventI(port, pad, mode, callback, arg); \
+ osalSysUnlock(); \
+ } while (false)
+
+/**
+ * @brief Pad event disable.
+ * @details This function disables previously programmed event callbacks.
+ *
+ * @param[in] port port identifier
+ * @param[in] pad pad number within the port
+ *
+ * @api
+ */
+#define palPadDisableEvent(port, pad) \
+ do { \
+ osalSysLock(); \
+ palPadDisableEventI(port, pad); \
+ osalSysUnlock(); \
+ } while (false)
+
+/**
* @brief Reads an input line logic state.
* @note The function can be called from any context.
*
@@ -750,6 +786,36 @@ typedef struct {
#define palLineDisableEventI(line) pal_lld_linedisableevent(line)
#endif
+/**
+ * @brief Line event enable.
+ *
+ * @param[in] line line identifier
+ * @param[in] mode line event mode
+ * @param[in] callback event callback function
+ * @param[in] arg callback argument
+ *
+ * @api
+ */
+#define palLineEnableEvent(line, mode, callback, arg) \
+ do { \
+ osalSysLock(); \
+ palLineEnableEventI(line, mode, callback, arg); \
+ osalSysUnlock(); \
+ } while (false)
+
+/**
+ * @brief Line event disable.
+ *
+ * @param[in] line line identifier
+ *
+ * @api
+ */
+#define palLineDisableEvent(line) \
+ do { \
+ osalSysLock(); \
+ palLineDisableEventI(line); \
+ osalSysUnlock(); \
+ } while (false)
/** @} */
/*===========================================================================*/
diff --git a/os/hal/ports/STM32/STM32L4xx/hal_lld.c b/os/hal/ports/STM32/STM32L4xx/hal_lld.c
index f02d2a3ba..d87f9b336 100644
--- a/os/hal/ports/STM32/STM32L4xx/hal_lld.c
+++ b/os/hal/ports/STM32/STM32L4xx/hal_lld.c
@@ -123,10 +123,14 @@ void hal_lld_init(void) {
/* Initializes the backup domain.*/
hal_lld_backup_domain_init();
+ /* DMA subsystems initialization.*/
#if defined(STM32_DMA_REQUIRED)
dmaInit();
#endif
+ /* IRQ subsystem initialization.*/
+ irqInit();
+
/* Programmable voltage detector enable.*/
#if STM32_PVD_ENABLE
PWR->CR2 = PWR_CR2_PVDE | (STM32_PLS & STM32_PLS_MASK);
diff --git a/os/hal/ports/STM32/STM32L4xx/stm32_isr.c b/os/hal/ports/STM32/STM32L4xx/stm32_isr.c
index 5fc69894c..71907f00c 100644
--- a/os/hal/ports/STM32/STM32L4xx/stm32_isr.c
+++ b/os/hal/ports/STM32/STM32L4xx/stm32_isr.c
@@ -327,7 +327,7 @@ OSAL_IRQ_HANDLER(Vector140) {
*
* @notapi
*/
-void stm32_irq_enable(void) {
+void irqInit(void) {
#if HAL_USE_PAL || HAL_USE_EXT
nvicEnableVector(EXTI0_IRQn, STM32_IRQ_EXTI0_PRIORITY);
@@ -352,7 +352,7 @@ void stm32_irq_enable(void) {
*
* @notapi
*/
-void stm32_irq_disable(void) {
+void irqDeinit(void) {
#if HAL_USE_PAL || HAL_USE_EXT
nvicDisableVector(EXTI0_IRQn);
diff --git a/os/hal/ports/STM32/STM32L4xx/stm32_isr.h b/os/hal/ports/STM32/STM32L4xx/stm32_isr.h
index 1cd5cc19d..76538a0a6 100644
--- a/os/hal/ports/STM32/STM32L4xx/stm32_isr.h
+++ b/os/hal/ports/STM32/STM32L4xx/stm32_isr.h
@@ -141,8 +141,8 @@
#ifdef __cplusplus
extern "C" {
#endif
- void stm32_irq_enable(void);
- void stm32_irq_disable(void);
+ void irqInit(void);
+ void irqDeinit(void);
#ifdef __cplusplus
}
#endif