mirror of https://github.com/ARMmbed/mbed-os.git
[DISCO_F407VG] test MBED_A7 InterruptIn failed
- solution similar to [NUCLEO_F4x1RE] - digital_loop tests "DigitalIn DigitalOut", "DigitalInOut" and "InterruptIn" are OKpull/495/head
parent
c59657a6d9
commit
45019cf62b
|
@ -254,7 +254,8 @@ void gpio_irq_set(gpio_irq_t *obj, gpio_irq_event event, uint32_t enable)
|
|||
else {
|
||||
mode = STM_MODE_IT_EVT_RESET;
|
||||
obj->event = EDGE_NONE;
|
||||
} }
|
||||
}
|
||||
}
|
||||
|
||||
pin_function(obj->pin, STM_PIN_DATA(mode, pull, 0));
|
||||
}
|
||||
|
|
|
@ -53,6 +53,7 @@ extern "C" {
|
|||
#define STM_MODE_EVT_RISING (9)
|
||||
#define STM_MODE_EVT_FALLING (10)
|
||||
#define STM_MODE_EVT_RISING_FALLING (11)
|
||||
#define STM_MODE_IT_EVT_RESET (12)
|
||||
|
||||
// High nibble = port number (0=A, 1=B, 2=C, 3=D, 4=E, 5=F, 6=G, 7=H)
|
||||
// Low nibble = pin number
|
||||
|
|
|
@ -223,7 +223,28 @@ void gpio_irq_set(gpio_irq_t *obj, gpio_irq_event event, uint32_t enable) {
|
|||
} 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));
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
#include "mbed_error.h"
|
||||
|
||||
// GPIO mode look-up table
|
||||
static const uint32_t gpio_mode[12] = {
|
||||
static const uint32_t gpio_mode[13] = {
|
||||
0x00000000, // 0 = GPIO_MODE_INPUT
|
||||
0x00000001, // 1 = GPIO_MODE_OUTPUT_PP
|
||||
0x00000011, // 2 = GPIO_MODE_OUTPUT_OD
|
||||
|
@ -45,7 +45,8 @@ static const uint32_t gpio_mode[12] = {
|
|||
0x10310000, // 8 = GPIO_MODE_IT_RISING_FALLING
|
||||
0x10120000, // 9 = GPIO_MODE_EVT_RISING
|
||||
0x10220000, // 10 = GPIO_MODE_EVT_FALLING
|
||||
0x10320000 // 11 = GPIO_MODE_EVT_RISING_FALLING
|
||||
0x10320000, // 11 = GPIO_MODE_EVT_RISING_FALLING
|
||||
0x10000000 // 12 = Reset GPIO_MODE_IT_EVT
|
||||
};
|
||||
|
||||
// Enable GPIO clock and return GPIO base address
|
||||
|
|
|
@ -14,6 +14,10 @@ DigitalIn in(D2);
|
|||
DigitalOut out(PC_6);
|
||||
DigitalIn in(PB_8);
|
||||
|
||||
#elif defined(TARGET_DISCO_F407VG)
|
||||
DigitalOut out(PC_12);
|
||||
DigitalIn in(PD_0);
|
||||
|
||||
#elif defined(TARGET_FF_ARDUINO)
|
||||
DigitalOut out(D7);
|
||||
DigitalIn in(D0);
|
||||
|
|
|
@ -10,10 +10,14 @@ DigitalInOut d2(dp2);
|
|||
DigitalInOut d1(D2);
|
||||
DigitalInOut d2(D7);
|
||||
|
||||
#elif defined(TARGET_NUCLEO_F103RB)
|
||||
#elif defined(TARGET_NUCLEO_F103RB) || defined(TARGET_NUCLEO_F401RE) || defined(TARGET_NUCLEO_F411RE)
|
||||
DigitalInOut d1(PC_6);
|
||||
DigitalInOut d2(PB_8);
|
||||
|
||||
#elif defined(TARGET_DISCO_F407VG)
|
||||
DigitalInOut d1(PC_12);
|
||||
DigitalInOut d2(PD_0);
|
||||
|
||||
#elif defined(TARGET_FF_ARDUINO)
|
||||
DigitalInOut d1(D0);
|
||||
DigitalInOut d2(D7);
|
||||
|
|
|
@ -47,6 +47,10 @@ void in_handler() {
|
|||
#define PIN_IN PB_8
|
||||
#define PIN_OUT PC_6
|
||||
|
||||
#elif defined(TARGET_DISCO_F407VG)
|
||||
#define PIN_OUT PC_12
|
||||
#define PIN_IN PD_0
|
||||
|
||||
#elif defined(TARGET_FF_ARDUINO)
|
||||
#define PIN_OUT D0
|
||||
#define PIN_IN D7
|
||||
|
|
Loading…
Reference in New Issue