mbed library sources
Fork of mbed-src by
Diff: targets/hal/TARGET_STM/TARGET_NUCLEO_F411RE/gpio_irq_api.c
- Revision:
- 327:a7562ccfb9d5
- Parent:
- 285:31249416b6f9
- Child:
- 402:09075a3b15e3
--- a/targets/hal/TARGET_STM/TARGET_NUCLEO_F411RE/gpio_irq_api.c Sat Sep 20 11:30:07 2014 +0100 +++ b/targets/hal/TARGET_STM/TARGET_NUCLEO_F411RE/gpio_irq_api.c Mon Sep 22 09:30:07 2014 +0100 @@ -233,7 +233,28 @@ } else { mode = STM_MODE_INPUT; pull = GPIO_NOPULL; - obj->event = EDGE_NONE; + if (event == IRQ_RISE) { + if ((obj->event == EDGE_FALL) || (obj->event == EDGE_BOTH)) { + mode = STM_MODE_IT_FALLING; + obj->event = EDGE_FALL; + } else if (obj->event == EDGE_RISE) { + mode = STM_MODE_IT_EVT_RESET; + obj->event = EDGE_NONE; + } + } + else if (event == IRQ_FALL) { + if ((obj->event == EDGE_RISE) || (obj->event == EDGE_BOTH)) { + mode = STM_MODE_IT_RISING; + obj->event = EDGE_RISE; + } else if (obj->event == IRQ_FALL) { + mode = STM_MODE_IT_EVT_RESET; + obj->event = EDGE_NONE; + } + } + else { + mode = STM_MODE_IT_EVT_RESET; + obj->event = EDGE_NONE; + } } pin_function(obj->pin, STM_PIN_DATA(mode, pull, 0));