From 387d1ffc16ce9e050403baee0ed07f3d9accf632 Mon Sep 17 00:00:00 2001
From: chen <15335560115@163.com>
Date: 星期五, 04 七月 2025 14:55:15 +0800
Subject: [PATCH] 初步移植完成0.6.8SDK,但发送有len太长未找到原因

---
 keil/include/drivers/mk_gpio.c |   13 +++++++++----
 1 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/keil/include/drivers/mk_gpio.c b/keil/include/drivers/mk_gpio.c
index 8682796..9541461 100644
--- a/keil/include/drivers/mk_gpio.c
+++ b/keil/include/drivers/mk_gpio.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2019-2023 Beijing Hanwei Innovation Technology Ltd. Co. and
+ * Copyright (c) 2019-2025 Beijing Hanwei Innovation Technology Ltd. Co. and
  * its subsidiaries and affiliates (collectly called MKSEMI).
  *
  * All rights reserved.
@@ -169,7 +169,9 @@
 void gpio_disable_irq(enum IO_PIN_T pin)
 {
     gpio_handle[0].base->INTENCLR = (1U << pin);
+    gpio_handle[0].irq_handler[pin] = NULL;
     gpio_handle[0].irq_mask &= ~(1U << pin);
+
     if (gpio_handle[0].irq_mask == 0)
     {
         NVIC_DisableIRQ(gpio_handle[0].irq);
@@ -180,13 +182,16 @@
 void GPIO_IRQHandler(void)
 {
     uint32_t int_stat = gpio_handle[0].base->INTSTATUS;
+    gpio_handle[0].base->INTSTATUS = int_stat;
 
     for (enum IO_PIN_T i = 0; i < IO_PIN_MAX; i++)
     {
-        if ((int_stat & (1U << i)) && (gpio_handle[0].irq_handler[i]))
+        if (int_stat & (1U << i))
         {
-            gpio_handle[0].irq_handler[i](i);
-            gpio_handle[0].base->INTSTATUS = (1 << i);
+            if (gpio_handle[0].irq_handler[i])
+            {
+                gpio_handle[0].irq_handler[i](i);
+            }
         }
     }
 }

--
Gitblit v1.9.3