HarmonyOS系统内核中GPIO控制方法

简介: 大家好,今天主要和大家聊一聊,如何使用鸿蒙系统控制开发板去点亮LED灯。

6b0f6241087d4a9691ebd7fbcfd0feb7.png

第一:鸿蒙外设GPIO简介

       GPIO(General-purpose input/output)即通用型输入输出。通常,GPIO控制器通过分组的方式管理所有GPIO管脚,每组GPIO有一个或多个寄存器与之关联,通过读写寄存器完成对GPIO管脚的操作。

GPIO接口定义了操作GPIO管脚的标准方法集合,包括:

  • 设置管脚方向:方向可以是输入或者输出(暂不支持高阻态)
  • 读写管脚电平值:电平值可以是低电平或高电平
  • 设置管脚中断服务函数:设置一个管脚的中断响应函数,以及中断触发方式
  • 使能和禁止管脚中断:禁止或使能管脚中断

第二:鸿蒙外设接口说明

    GpioRead:读管脚电平值


    GpioWrite:写管脚电平值


    GpioSetDir:设置管脚方向


    GpioGetDir:获取管脚方向


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


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


    GpioEnableIrq:使能管脚中断


    GpioDisableIrq:禁止管脚中断

GPIO使用流程图:

b616b854c0a44045944aae64215d232c.png

第三:鸿蒙系统中API分析

      利用API函数控制对应的GPIO完成输出功能设置。

      GpioInit()

unsigned int GpioInit (void )

功能描述:初始化GPIO外设。

     IoSetFunc()

unsigned int IoSetFunc (WifiIotIoName id, unsigned char val )

功能描述:设置GPIO引脚复用功能

参数:

名字 描述
id 表示GPIO引脚号.
val 表示GPIO复用功能


  GpioSetDir()

unsigned int GpioSetDir (WifiIotGpioIdx id, WifiIotGpioDir dir )

功能描述:设置GPIO输出方向

参数:

名字 描述
id 表示GPIO引脚号.
dir 表示GPIO输出方向.

第四:硬件设计

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

13343a86094b4827b4c5551e34662c90.png

第五:软件设计

   主要代码分析

LedTask()为LED灯测试主任务,该任务先调用GpioInit()初始化GPIO,因为LED灯的控制引脚接在GPIO_2上,所以通过调用IoSetFunc()和GpioSetDir()将GPIO_2设置为普通GPIO的输出模式。最后在死循环里面间隔 1s 输出GPIO_2的高低电平,实现LED灯闪烁的现象。

static void LedTask(void)
{
    GpioInit();//初始化GPIO
    IoSetFunc(WIFI_IOT_IO_NAME_GPIO_2, WIFI_IOT_IO_FUNC_GPIO_2_GPIO);//设置GPIO_2的复用功能为普通GPIO
    GpioSetDir(WIFI_IOT_IO_NAME_GPIO_2, WIFI_IOT_GPIO_DIR_OUT);//设置GPIO_2为输出模式
    while (1) 
        {
            GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_2, 1);//设置GPIO_2输出高电平点亮LED灯
            usleep(1000000);//延时1s
            GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_2, 0);//设置GPIO_2输出低电平熄灭LED灯
            usleep(1000000);//延时1s
        }
}

第六:编译调试

   修改BUILD.gn文件

   修改applications\BearPi\BearPi-HM_Nano\sample 路径下 BUILD.gn 文件,指定 led_example 参与编译。

"B1_basic_led_blink:led_example",
#"B2_basic_button:button_example",
#"B3_basic_pwm_led:pwm_example",
#"B4_basic_adc:adc_example",
#"B5_basic_i2c_nfc:i2c_example",
#"B6_basic_uart:uart_example",

第七:运行结果

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

目录
相关文章
|
15天前
|
JavaScript 前端开发 物联网
「Mac畅玩鸿蒙与硬件1」鸿蒙开发环境配置篇1 - 认识鸿蒙系统与开发工具
本篇将介绍鸿蒙操作系统(HarmonyOS)的基本概念以及在 Mac 环境下进行鸿蒙开发所需的工具。通过了解鸿蒙系统和开发工具的特点,为后续的学习和实践奠定基础。
39 1
「Mac畅玩鸿蒙与硬件1」鸿蒙开发环境配置篇1 - 认识鸿蒙系统与开发工具
|
22天前
|
存储 数据管理 调度
HarmonyOS架构理解:揭开鸿蒙系统的神秘面纱
【10月更文挑战第21天】华为的鸿蒙系统(HarmonyOS)以其独特的分布式架构备受关注。该架构包括分布式软总线、分布式数据管理和分布式任务调度。分布式软总线实现设备间的无缝连接;分布式数据管理支持跨设备数据共享;分布式任务调度则实现跨设备任务协同。这些特性为开发者提供了强大的工具,助力智能设备的未来发展。
73 1
|
1月前
|
安全 物联网 大数据
基于开元鸿蒙(OpenHarmony)的【智能药房与药品管理综合应用系统
基于开元鸿蒙(OpenHarmony)的【智能药房与药品管理综合应用系统
80 8
|
1月前
|
传感器 监控 算法
基于开源鸿蒙(OpenHarmony)的【智能家居综合应用】系统
基于开源鸿蒙(OpenHarmony)的【智能家居综合应用】系统
89 6
|
1月前
|
传感器 人工智能 监控
【基于开源鸿蒙(OpenHarmony)的智慧农业综合应用系统】
【基于开源鸿蒙(OpenHarmony)的智慧农业综合应用系统】
97 6
|
1月前
|
搜索推荐 物联网 开发工具
基于OpenHarmony(开源鸿蒙)的智慧医疗综合应用系统
基于OpenHarmony(开源鸿蒙)的智慧医疗综合应用系统
82 5
|
5月前
|
网络协议 安全 调度
阿里云公共DNS发布支持鸿蒙系统版的SDK
阿里云公共DNS发布支持鸿蒙系统版SDK,赋能鸿蒙开发者快速接入阿里云公共DNS服务。公共DNS将帮助接入的鸿蒙应用免除LocalDNS劫持困扰、解析加速、精准调度。
|
6月前
|
Android开发
【通讯录教程】苹果安卓鸿蒙系统通用,如何大批量导入手机号码到手机的通讯录,下面教你方法,只需1分钟搞定几万个号码的导入手机电话本
该文介绍了一种快速批量导入手机通讯录的方法,适用于处理大量手机号的需求,如微商管理、客户资料整理等。在QQ同步助手开始收费后,提供了免费的替代方案。步骤包括:下载批量导入软件(链接提供腾讯云盘和百度网盘地址),清空通讯录(非必需),制作符合格式的通讯录文件,并按操作系统(苹果、安卓或鸿蒙)进行导入。整个过程只需1分钟,简便快捷。
456 2
|
6月前
|
安全 开发工具 开发者
请说明鸿蒙操作系统的生态系统建设和开发者支持措施。
请说明鸿蒙操作系统的生态系统建设和开发者支持措施。
135 5