From e855302063d1707d1a023da55a28729fc9769811 Mon Sep 17 00:00:00 2001 From: zhangyalei Date: Mon, 25 Apr 2022 20:43:28 -0700 Subject: [PATCH] fix: clean gpio issue Signed-off-by: zhangyalei --- .../driver/driver-platform-gpio-des.md | 139 +++++------------- 1 file changed, 40 insertions(+), 99 deletions(-) diff --git a/zh-cn/device-dev/driver/driver-platform-gpio-des.md b/zh-cn/device-dev/driver/driver-platform-gpio-des.md index 28cc26f4f6..aa833d1b9c 100644 --- a/zh-cn/device-dev/driver/driver-platform-gpio-des.md +++ b/zh-cn/device-dev/driver/driver-platform-gpio-des.md @@ -65,7 +65,7 @@ GPIO接口定义了操作GPIO管脚的标准方法集合,包括:

设置管脚对应的中断服务函数

-

GpioUnSetIrq

+

GpioUnsetIrq

取消管脚对应的中断服务函数

@@ -245,7 +245,7 @@ GPIO标准API通过GPIO管脚号来操作指定管脚,使用GPIO的一般流 示例代码: - ``` + ```c int32_t ret; uint16_t val; /* 将3号GPIO管脚配置为输出 */ @@ -326,76 +326,38 @@ GPIO标准API通过GPIO管脚号来操作指定管脚,使用GPIO的一般流 >![](../public_sys-resources/icon-caution.gif) **注意:** >同一时间,只能为某个GPIO管脚设置一个中断服务函数,如果重复调用GpioSetIrq函数,则之前设置的中断服务函数会被取代。 - 当不再需要响应中断服务函数时,使用如下函数取消中断设置: +- 当不再需要响应中断服务函数时,使用如下函数取消中断设置: - int32\_t GpioUnSetIrq\(uint16\_t gpio\); + int32\_t GpioUnsetIrq\(uint16\_t gpio, void *arg\); - **表 6** GpioUnSetIrq参数和返回值描述 + **表 6** GpioUnsetIrq参数和返回值描述 - - - - - - - - - - - - - - - - -

参数

-

参数描述

-

gpio

-

GPIO管脚号

-

返回值

-

返回值描述

-

0

-

取消成功

-

负数

-

取消失败

-
+ + | **参数** | **参数描述** | + | ---------- | -------------- | + | gpio | GPIO管脚号 | + | arg | GPIO中断数据 | + | **返回值** | **返回值描述** | + | 0 | 取消成功 | + | 负数 | 取消失败 | - 在中断服务程序设置完成后,还需要先通过如下函数使能GPIO管脚的中断: +- 在中断服务程序设置完成后,还需要先通过如下函数使能GPIO管脚的中断: int32\_t GpioEnableIrq\(uint16\_t gpio\); - + **表 7** GpioEnableIrq参数和返回值描述 - + - - - - - - - - - - - - - - - - -

参数

-

参数描述

-

gpio

-

GPIO管脚号

-

返回值

-

返回值描述

-

0

-

使能成功

-

负数

-

使能失败

-
- + | **参数** | **参数描述** | + | ---------- | -------------- | + | gpio | GPIO管脚号 | + | **返回值** | **返回值描述** | + | 0 | 使能成功 | + | 负数 | 使能失败 | + + + >![](../public_sys-resources/icon-caution.gif) **注意:** >必须通过此函数使能管脚中断,之前设置的中断服务函数才能被正确响应。 @@ -406,37 +368,16 @@ GPIO标准API通过GPIO管脚号来操作指定管脚,使用GPIO的一般流 **表 8** GpioDisableIrq参数和返回值描述 - - - - - - - - - - - - - - - - -

参数

-

参数描述

-

gpio

-

GPIO管脚号

-

返回值

-

返回值描述

-

0

-

禁止成功

-

负数

-

禁止失败

-
- + | **参数** | **参数描述** | + | ---------- | -------------- | + | gpio | GPIO管脚号 | + | **返回值** | **返回值描述** | + | 0 | 禁止成功 | + | 负数 | 禁止失败 | + 示例代码: - - ``` + +```c /* 中断服务函数 */ int32_t MyCallBackFunc(uint16_t gpio, void *data) @@ -459,21 +400,21 @@ GPIO标准API通过GPIO管脚号来操作指定管脚,使用GPIO的一般流 HDF_LOGE("GpioEnableIrq: failed, ret %d\n", ret); return; } - + /* 禁止3号GPIO管脚中断 */ ret = GpioDisableIrq(3); if (ret != 0) { HDF_LOGE("GpioDisableIrq: failed, ret %d\n", ret); return; } - + /* 取消3号GPIO管脚中断服务程序 */ - ret = GpioUnSetIrq(3); + ret = GpioUnsetIrq(3, NULL); if (ret != 0) { HDF_LOGE("GpioUnSetIrq: failed, ret %d\n", ret); return; } - ``` +``` ## 使用实例 @@ -484,7 +425,7 @@ GPIO标准API通过GPIO管脚号来操作指定管脚,使用GPIO的一般流 读者可以根据自己使用的开发板,参考其原理图,选择一个空闲的GPIO管脚即可。 -``` +```c #include "gpio_if.h" #include "hdf_log.h" #include "osal_irq.h" @@ -550,7 +491,7 @@ static int32_t TestCaseGpioIrqEdge(void) OsalMDelay(200); /* wait for irq trigger */ timeout += 200; } - (void)GpioUnSetIrq(gpio); + (void)GpioUnsetIrq(gpio, NULL); return (g_irqCnt > 0) ? HDF_SUCCESS : HDF_FAILURE; } ``` -- GitLab