LOADING

加载过慢请开启缓存 浏览器默认开启

openharmony用ubuntu编写GPIO

openharmony用ubuntu编写GPIO

代码下载

第一部分:代码结构

软件部分目录结构

gpio_input_demo
├─ BUILD.gn
└─ gpio_input_get.c

我们打开文件
代码打开gpio_input_get.c

不同SOC芯片由于其GPIO控制器型号、参数、以及控制器驱动的不同,GPIO管脚号的换算方式不一样。

工作流程

主要函数

头文件

#include "iot_gpio.h"   // OpenHarmony HAL API:IoT硬件设备操作接口-GPIO
#include "hi_io.h"      // 海思Pegasus SDK API:IoT硬件设备操作接口-IO

初始化GPIO

IoTGpioInit(引脚);

引脚:
开发板上要用的GPIO引脚号
返回值:
成功:IOT_SUCCESS(0)
失败:IOT_FAILURE(-1)

设置GPIO模式

IoTGpioSetDir(引脚,GPIO方向);//1-输出 0-输入

引脚:
开发板上要用的GPIO引脚号
GPIO方向:
输出:IOT_GPIO_DIR_OUT==1
输入: IOT_GPIO_DIR_IN ==0
返回值:
成功:IOT_SUCCESS(0)
失败:IOT_FAILURE(-1)

GPIO复用

hi_io_set_func(引脚,模式);

引脚:
开发板上要用的GPIO引脚号
模式:
有些GPIO还需要设置复用功能,可能默认不是普通GPIO模式。
具体哪些模式需要查询:
//鸿蒙路径/device/hisilicon/hispark_pegasus/sdk_liteos/include/hi_io.h
代码跳转
返回值:
成功:IOT_SUCCESS(0)
失败:IOT_FAILURE(-1)

GPIO输入模式

hi_io_set_pull(引脚, 输入模式); 

引脚:
开发板上要用的GPIO引脚号
输入模式:
HI_IO_PULL_NONE, /< Disabled.CNcomment:无拉CNend//浮空
HI_IO_PULL_UP, /
< Pull-up enabled.CNcomment:上拉CNend */
HI_IO_PULL_DOWN, /**< Pull-down enabled.CNcomment:下拉CNend */
HI_IO_PULL_MAX, /**< Invalid.CNcomment:无效值CNend */

GPIO读取电平

IoTGpioGetInputVal(引脚, &value);

引脚:
开发板上要用的GPIO引脚号
value:
接收读取电平值的指针,可以设置
IotGpioValue value
value为1是高电平,0是低电平
返回值:
成功:IOT_SUCCESS(0)
失败:IOT_FAILURE(-1)

系统延时

usleep(us); //   delay us
osDelay(us);//   delay us
hi_udelay(us);// delay_us int32

us:
延迟为微秒