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:
延迟为微秒