美文网首页
HI3861学习笔记(11)——GPIO输出接口使用

HI3861学习笔记(11)——GPIO输出接口使用

作者: Leung_ManWah | 来源:发表于2021-07-26 22:27 被阅读0次

    一、简介

    HI3861V100 芯片有 15 个 GPIO,引脚分布如下:



    二、API说明

    以下 GPIO 接口位于 base\iot_hardware\interfaces\kits\wifiiot_lite\wifiiot_gpio.h

    业务BUILD.gn中包含路径

    include_dirs = [
            "//utils/native/lite/include",
            "//kernel/liteos_m/components/cmsis/2.0",
            "//base/iot_hardware/interfaces/kits/wifiiot_lite",
        ]
    

    2.1 GpioInit

    功能 初始化GPIO外设
    函数定义 unsigned int GpioInit(void)
    参数
    返回 错误码

    2.2 GpioSetDir

    功能 设置GPIO输出方向
    函数定义 unsigned int GpioSetDir(WifiIotGpioIdx id, WifiIotGpioDir dir)
    参数 id:表示GPIO引脚号
    dir:表示GPIO输出方向
    返回 错误码

    2.3 GpioSetOutputVal

    功能 设置GPIO引脚输出电平值
    函数定义 unsigned int GpioSetOutputVal(WifiIotGpioIdx id, WifiIotGpioValue val)
    参数 id:表示GPIO引脚号
    dir:表示GPIO输出电平值
    返回 错误码

    以下扩展 GPIO 接口位于 base\iot_hardware\interfaces\kits\wifiiot_lite\wifiiot_gpio_ex.h

    2.4 IoSetFunc

    功能 设置GPIO引脚功能
    函数定义 unsigned int IoSetFunc(WifiIotIoName id, unsigned char val)
    参数 id:表示GPIO引脚号
    val:表示IO复用功能
    返回 错误码

    三、使用GPIO输出功能去点亮LED灯

    编译时在业务BUILD.gn中包含路径

    include_dirs = [
            "//utils/native/lite/include",
            "//kernel/liteos_m/components/cmsis/2.0",
            "//base/iot_hardware/interfaces/kits/wifiiot_lite",
        ]
    

    使用板载的LED来验证GPIO的输出功能,在BearPi-HM_Nano开发板上LED的连接电路图如下图所示,LED的控制引脚与主控芯片的GPIO_2连接,所以需要编写软件去控制GPIO_2输出高低电平实现LED灯的亮灭。


    #include <stdio.h>
    #include <unistd.h>
    
    #include "ohos_init.h"
    #include "cmsis_os2.h"
    #include "wifiiot_gpio.h"
    #include "wifiiot_gpio_ex.h"
    
    static void LedTask(void)
    {
        //初始化GPIO
        GpioInit();
    
        //设置GPIO_2的复用功能为普通GPIO
        IoSetFunc(WIFI_IOT_IO_NAME_GPIO_2, WIFI_IOT_IO_FUNC_GPIO_2_GPIO);
    
        //设置GPIO_2为输出模式
        GpioSetDir(WIFI_IOT_GPIO_IDX_2, WIFI_IOT_GPIO_DIR_OUT);
    
        while (1)
        {
            //设置GPIO_2输出高电平点亮LED灯
            GpioSetOutputVal(WIFI_IOT_GPIO_IDX_2, 1);
    
            //延时1s
            usleep(1000000);
    
            //设置GPIO_2输出低电平熄灭LED灯
            GpioSetOutputVal(WIFI_IOT_GPIO_IDX_2, 0);
    
            //延时1s
            usleep(1000000);
        }
    }
    
    static void LedExampleEntry(void)
    {
        osThreadAttr_t attr;
    
        attr.name = "LedTask";
        attr.attr_bits = 0U;
        attr.cb_mem = NULL;
        attr.cb_size = 0U;
        attr.stack_mem = NULL;
        attr.stack_size = 512;
        attr.priority = 25;
    
        if (osThreadNew((osThreadFunc_t)LedTask, NULL, &attr) == NULL)
        {
            printf("Falied to create LedTask!\n");
        }
    }
    
    APP_FEATURE_INIT(LedExampleEntry);
    

    代码编译烧录代码后,按下开发板的RESET按键,开发板的LED灯开始闪烁:



    • 由 Leung 写于 2021 年 7 月 26 日

    • 参考:【鸿蒙2.0设备开发教程】小熊派HarmonyOS 鸿蒙·季 开发教程

    相关文章

      网友评论

          本文标题:HI3861学习笔记(11)——GPIO输出接口使用

          本文链接:https://www.haomeiwen.com/subject/aojgmltx.html