From 4f107cc061f7f7b3ac8a735f7733c5668e4c3b32 Mon Sep 17 00:00:00 2001 From: "panyz0725@thundersoft.com" <1354643858@163.com> Date: Mon, 10 Jun 2019 09:46:04 +0800 Subject: [PATCH 1/3] Add GPIO INT pin with PT1 --- .../TARGET_TT/TARGET_TT_M3HQ/gpio_irq_api.c | 41 ++++++++++++++++++- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/targets/TARGET_TT/TARGET_TT_M3HQ/gpio_irq_api.c b/targets/TARGET_TT/TARGET_TT_M3HQ/gpio_irq_api.c index 81fd7c1964..d0c553921c 100644 --- a/targets/TARGET_TT/TARGET_TT_M3HQ/gpio_irq_api.c +++ b/targets/TARGET_TT/TARGET_TT_M3HQ/gpio_irq_api.c @@ -43,6 +43,7 @@ const PinMap PinMap_GPIO_IRQ[] = { {PV2, GPIO_IRQ_17_18, PIN_DATA(0, 0)}, {PH4, GPIO_IRQ_19_22, PIN_DATA(0, 0)}, {PT0, GPIO_IRQ_23_26, PIN_DATA(0, 0)}, + {PT1, GPIO_IRQ_23_26, PIN_DATA(0, 0)}, {PG2, GPIO_IRQ_27_28, PIN_DATA(0, 0)}, {PT7, GPIO_IRQ_29, PIN_DATA(0, 0)}, {PU0, GPIO_IRQ_30_31, PIN_DATA(0, 0)}, @@ -54,6 +55,7 @@ static gpio_irq_handler hal_irq_handler[CHANNEL_NUM] = {NULL}; static void SetSTBYReleaseINTSrc(cg_intsrc, cg_intactivestate, FunctionalState ); cg_intactivestate CurrentState; static void INT_IRQHandler(PinName pin, uint32_t index); +static uint32_t CheckPinNameIRQSRC(PinName pin); // Initialize gpio IRQ pin int gpio_irq_init(gpio_irq_t *obj, PinName pin, gpio_irq_handler handler, uint32_t id) @@ -138,7 +140,7 @@ int gpio_irq_init(gpio_irq_t *obj, PinName pin, gpio_irq_handler handler, uint32 obj->irq_src = CG_INT_SRC_14; break; case GPIO_IRQ_23_26: - obj->irq_src = CG_INT_SRC_18; + obj->irq_src = CheckPinNameIRQSRC(pin); break; case GPIO_IRQ_27_28: obj->irq_src = CG_INT_SRC_1C; @@ -391,9 +393,19 @@ void INT19_22_IRQHandler(void) INT_IRQHandler(PH4, 19); } +#define BIT22 (0x1 << 22) +#define BIT21 (0x1 << 21) void INT23_26_IRQHandler(void) { - INT_IRQHandler(PT0, 23); + uint32_t int_num = TSB_IMN->FLG5; + if( int_num & BIT22) + { + INT_IRQHandler(PT1, 24); + } + else if(int_num & BIT21) + { + INT_IRQHandler(PT0, 23); + } } void INT27_28_IRQHandler(void) @@ -435,3 +447,28 @@ static void SetSTBYReleaseINTSrc(cg_intsrc intsource, cg_intactivestate ActiveSt __IO uint8_t imc = *p_imc; } } + +/** + * @brief Return INTSRC for gpio INT that enable more than one pin. + * @param pin PinName. + * @return GPIO IRQn_Type . + * @note You can expand func CheckPinNameIRQSRC if need to add other GPIO INT. + */ +static uint32_t CheckPinNameIRQSRC(PinName pin) +{ + switch(pin) + { + case PT0: + return CG_INT_SRC_18; + case PT1: + return CG_INT_SRC_19; + //Expand: + //case PT2: + // return CG_INT_SRC_20; + //case PT3: + // return CG_INT_SRC_21; + default: + break; + } + return -1; +} \ No newline at end of file From 24384a0fa0c01c4ed7cb8513840ce2a568de3cb2 Mon Sep 17 00:00:00 2001 From: ThunderSoft_mbed_os <44602518+ThunderSoft123@users.noreply.github.com> Date: Sun, 23 Jun 2019 22:00:51 +0800 Subject: [PATCH 2/3] Update gpio_irq_api.c --- targets/TARGET_TT/TARGET_TT_M3HQ/gpio_irq_api.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/targets/TARGET_TT/TARGET_TT_M3HQ/gpio_irq_api.c b/targets/TARGET_TT/TARGET_TT_M3HQ/gpio_irq_api.c index d0c553921c..8e65cd8534 100644 --- a/targets/TARGET_TT/TARGET_TT_M3HQ/gpio_irq_api.c +++ b/targets/TARGET_TT/TARGET_TT_M3HQ/gpio_irq_api.c @@ -462,13 +462,8 @@ static uint32_t CheckPinNameIRQSRC(PinName pin) return CG_INT_SRC_18; case PT1: return CG_INT_SRC_19; - //Expand: - //case PT2: - // return CG_INT_SRC_20; - //case PT3: - // return CG_INT_SRC_21; default: break; } return -1; -} \ No newline at end of file +} From edeeb33ba74a51bb432c17981858debc3a3acae1 Mon Sep 17 00:00:00 2001 From: ThunderSoft_mbed_os <44602518+ThunderSoft123@users.noreply.github.com> Date: Wed, 26 Jun 2019 22:33:31 +0800 Subject: [PATCH 3/3] Update gpio_irq_api.c --- targets/TARGET_TT/TARGET_TT_M3HQ/gpio_irq_api.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/targets/TARGET_TT/TARGET_TT_M3HQ/gpio_irq_api.c b/targets/TARGET_TT/TARGET_TT_M3HQ/gpio_irq_api.c index 8e65cd8534..890f0b1621 100644 --- a/targets/TARGET_TT/TARGET_TT_M3HQ/gpio_irq_api.c +++ b/targets/TARGET_TT/TARGET_TT_M3HQ/gpio_irq_api.c @@ -398,12 +398,9 @@ void INT19_22_IRQHandler(void) void INT23_26_IRQHandler(void) { uint32_t int_num = TSB_IMN->FLG5; - if( int_num & BIT22) - { + if( int_num & BIT22) { INT_IRQHandler(PT1, 24); - } - else if(int_num & BIT21) - { + } else if(int_num & BIT21) { INT_IRQHandler(PT0, 23); } }