From 679f989b5b5ccbb891ce431130c23378146730ea Mon Sep 17 00:00:00 2001 From: Passionate0424 <1852282973@qq.com> Date: Thu, 24 Apr 2025 11:08:33 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9ifx=5Fpin=5Firq=5Fenable?= =?UTF-8?q?=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bsp/Infineon/libraries/HAL_Drivers/drv_gpio.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bsp/Infineon/libraries/HAL_Drivers/drv_gpio.c b/bsp/Infineon/libraries/HAL_Drivers/drv_gpio.c index e4d7cddf25f..83c6617ff17 100644 --- a/bsp/Infineon/libraries/HAL_Drivers/drv_gpio.c +++ b/bsp/Infineon/libraries/HAL_Drivers/drv_gpio.c @@ -6,6 +6,7 @@ * Change Logs: * Date Author Notes * 2022-07-1 Rbb666 first version + * 2025-04-24 Passionate0424 fix ifx_pin_irq_enable */ #include "drv_gpio.h" @@ -353,7 +354,7 @@ static rt_err_t ifx_pin_irq_enable(struct rt_device *device, rt_base_t pin, { level = rt_hw_interrupt_disable(); - Cy_GPIO_Port_Deinit(CYHAL_GET_PORTADDR(gpio_pin)); + irqmap = &pin_irq_map[gpio_port]; #if !defined(COMPONENT_CAT1C) IRQn_Type irqn = (IRQn_Type)(irqmap->irqno + PORT_GET(irqmap->port)); From 6d0292bb4e720ef873fc93992a68e41ded8eae60 Mon Sep 17 00:00:00 2001 From: Passionate0424 <144249616+Passionate0424@users.noreply.github.com> Date: Thu, 24 Apr 2025 22:47:13 +0800 Subject: [PATCH 2/3] Update drv_gpio.c MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改中断号不正确问题 --- bsp/Infineon/libraries/HAL_Drivers/drv_gpio.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bsp/Infineon/libraries/HAL_Drivers/drv_gpio.c b/bsp/Infineon/libraries/HAL_Drivers/drv_gpio.c index 83c6617ff17..0484f8357b5 100644 --- a/bsp/Infineon/libraries/HAL_Drivers/drv_gpio.c +++ b/bsp/Infineon/libraries/HAL_Drivers/drv_gpio.c @@ -321,7 +321,7 @@ static rt_err_t ifx_pin_irq_enable(struct rt_device *device, rt_base_t pin, irqmap = &pin_irq_map[gpio_port]; #if !defined(COMPONENT_CAT1C) - IRQn_Type irqn = (IRQn_Type)(irqmap->irqno + PORT_GET(irqmap->port)); + IRQn_Type irqn = irqmap->irqno; irq_cb_data[irqn].callback = irq_callback; irq_cb_data[irqn].callback_arg = (rt_uint16_t *)&pin_irq_map[gpio_port].port; cyhal_gpio_register_callback(gpio_pin, &irq_cb_data[irqn]); @@ -357,7 +357,7 @@ static rt_err_t ifx_pin_irq_enable(struct rt_device *device, rt_base_t pin, irqmap = &pin_irq_map[gpio_port]; #if !defined(COMPONENT_CAT1C) - IRQn_Type irqn = (IRQn_Type)(irqmap->irqno + PORT_GET(irqmap->port)); + IRQn_Type irqn = irqmap->irqno; _cyhal_irq_disable(irqn); #endif rt_hw_interrupt_enable(level); From 816e242929c24fcf637df8201420979d3f894c23 Mon Sep 17 00:00:00 2001 From: Zhao Puhan <144249616+Passionate0424@users.noreply.github.com> Date: Thu, 1 May 2025 11:50:01 +0800 Subject: [PATCH 3/3] Update bsp/Infineon/libraries/HAL_Drivers/drv_gpio.c Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- bsp/Infineon/libraries/HAL_Drivers/drv_gpio.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/bsp/Infineon/libraries/HAL_Drivers/drv_gpio.c b/bsp/Infineon/libraries/HAL_Drivers/drv_gpio.c index 0484f8357b5..327fcd230b0 100644 --- a/bsp/Infineon/libraries/HAL_Drivers/drv_gpio.c +++ b/bsp/Infineon/libraries/HAL_Drivers/drv_gpio.c @@ -358,6 +358,11 @@ static rt_err_t ifx_pin_irq_enable(struct rt_device *device, rt_base_t pin, #if !defined(COMPONENT_CAT1C) IRQn_Type irqn = irqmap->irqno; + if (irqn < 0 || irqn >= PIN_IFXPORT_MAX) + { + rt_hw_interrupt_enable(level); + return -RT_EINVAL; + } _cyhal_irq_disable(irqn); #endif rt_hw_interrupt_enable(level);