鸿蒙南北向开发基础及项目实战教程 课件2.3鸿蒙设备GPIO应用开发_第1页
鸿蒙南北向开发基础及项目实战教程 课件2.3鸿蒙设备GPIO应用开发_第2页
鸿蒙南北向开发基础及项目实战教程 课件2.3鸿蒙设备GPIO应用开发_第3页
鸿蒙南北向开发基础及项目实战教程 课件2.3鸿蒙设备GPIO应用开发_第4页
鸿蒙南北向开发基础及项目实战教程 课件2.3鸿蒙设备GPIO应用开发_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2.3鸿蒙设备GPIO应用开发本章主要讲述鸿蒙设备GPIO应用开发。通过学习本节将能够了解鸿蒙系统设备GPIO应用开发。通过本节学习可以熟悉:华为海思的GPIO操作函数鸿蒙系统的GPIO操作函数鸿蒙系统的GPIO中断处理华为海思的GPIO操作函数鸿蒙系统的GPIO操作函数鸿蒙系统的GPIO中断处理华为海思的GPIO操作函数(1/7)

GPIO(GeneralPurposeInput/Output,通用输入输出口)主要作为输入或输出功能使用,当需要用代码主动控制GPIO输出高低电平时,GPIO应当设置输出功能;当需要通过GPIO获取连接设备输出的高低电平时,GPIO应当设置输入功能。Hi3861芯片手册中GPIO_03GPIO的用途选择寄存器:华为海思的GPIO操作函数(2/7)LED连接到GPIO_02引脚,GPIO_02应当被配置为输出功能。当GPIO_02引脚输出高电平时,LED亮;而当GPIO_02输出低电平时,LED熄。华为海思的GPIO操作函数(3/7)Hi3861共有15个多功能的GPIO,在鸿蒙工程中的hi_io.h头文件,芯片厂家已定义好表示每个GPIO的枚举常量:typedefenum{HI_IO_NAME_GPIO_0,//表示GPIO0...HI_IO_NAME_GPIO_14,//表示GPIO14...}hi_io_name;由此可见,HI_IO_NAME_GPIO_2对应着GPIO_02引脚。华为海思的GPIO操作函数(4/7)

在hi_io.h头文件中,也定义一系列的枚举常量描述每个GPIO可选择使用的功能,例如GPIO_02的功能描述为:typedefenum{

HI_IO_FUNC_GPIO_2_GPIO,

//该引脚可作为通用GPIO,用于连接输入输出高低电平的设备。

HI_IO_FUNC_GPIO_2_UART1_RTS_N=2,

//该引脚可作为第1个UART控制器的硬件流控功能引脚。

HI_IO_FUNC_GPIO_2_SPI1_TXD,

//作为第1个SPI控制器的数据发送引脚

HI_IO_FUNC_GPIO_2_JTAG_TRSTN,

//作为连接JTAG调试器的功能引脚

HI_IO_FUNC_GPIO_2_PWM2_OUT,

//作为第2个PWM控制器信号输出引脚

HI_IO_FUNC_GPIO_2_SSI_CLK=7,

//作为SSI控制器的时钟输出引脚}hi_io_func_gpio_2;华为海思的GPIO操作函数(5/7)Hi3861的每个GPIO都是多用途功能的,但某一时刻只能选择其中一种功能。同时在hi_io.h头文件中提供了设置GPIO用途的函数:

hi_u32hi_io_set_func(hi_io_nameid,hi_u8val);用法:由于GPIO_2仅需通过输出高低电平即可实现控制LED的亮灭,因此应将GPIO_02引脚配置为GPIO引脚用途,相应的设置代码如下:

hi_io_set_func(HI_IO_NAME_GPIO_2,HI_IO_FUNC_GPIO_2_GPIO);若要使GPIO默认保持高低电平状态,可以配置GPIO的上下拉功能,该功能由hi_io.h头文件中的配置函数提供:

hi_u32hi_io_set_pull(hi_io_nameid,hi_io_pullval);用法:如设置GPIO_02引脚默认处于高电平状态,则设置上拉的代码应当如下:hi_io_set_pull(HI_IO_NAME_GPIO_2,HI_IO_PULL_UP);华为海思的GPIO操作函数(6/7)typedefenum{HI_GPIO_IDX_0,//表示GPIO0...HI_GPIO_IDX_14,//表示GPIO14}hi_gpio_idx;与hi_io.h中GPIO的枚举常量相对应,也可以直接使用hi_io.h中的常量用于设置id对应的GPIO选择dir值指定的输入或输出功能,注意IO须设置GPIO用途。hi_u32hi_gpio_set_dir(hi_gpio_idxid,hi_gpio_dirdir);typedefenum{HI_GPIO_DIR_IN=0,//表示输入

HI_GPIO_DIR_OUT//表示输出

}hi_gpio_dir;

表示输入与输出功能的枚举类型华为海思的GPIO操作函数(7/7)设置id对应的GPIO输出val值指定的高或低电平,注意GPIO须设置输出功能hi_u32hi_gpio_set_ouput_val(hi_gpio_idxid,hi_gpio_valueval);typedefenum{HI_GPIO_VALUE0=0,//表示低电平HI_GPIO_VALUE1//表示高电平}hi_gpio_value;表示GPIO电平状态的枚举类型获取id对应的GPIO输出电平状态,val参数为一个hi_gpio_value变量的地址,用于存放电平状态值hi_u32hi_gpio_get_output_val(hi_gpio_idxid,hi_gpio_value*val);获取id对应的GPIO输入电平状态,val参数为hi_gpio_value类型变量的地址,用于存放获取的电平状态hi_u32hi_gpio_get_input_val(hi_gpio_idxid,hi_gpio_value*val)华为海思的GPIO操作函数鸿蒙系统的GPIO操作函数鸿蒙系统的GPIO中断处理鸿蒙系统的GPIO操作函数(1/2)

鸿蒙系统在iot_gpio.h头文件中提供了大量以IoT开头命名的通用操作函数申请并标记使用id对应的GPIO,在多人协同开发中避免重复使用同一个IOunsignedintIoTGpioInit(unsignedintid);申请成功返回IOT_SUCCESS(值0),失败返回IOT_FAILURE

设置指定id对应的GPIO功能,dir指定的输入或输出功能unsignedintIoTGpioSetDir(unsignedintid,IotGpioDirdir);typedefenum{

IOT_GPIO_DIR_IN=0,

//表示输入

IOT_GPIO_DIR_OUT

//表示输出}IotGpioDir;输入输出类型鸿蒙系统的GPIO操作函数(2/2)

typedefenum{IOT_GPIO_VALUE0=0,//表示低电平IOT_GPIO_VALUE1//表示高电平}IotGpioValue;

在IoT函数中表示GPIO电平状态的枚举类型设置id对应的GPIO输出val指定的高低电平unsignedintIoTGpioSetOutputVal(unsignedintid,IotGpioValueval);获取id对应的GPIO输出电平状态,并将输出的电平值存入val指向的变量unsignedintIoTGpioGetOutputVal(unsignedintid,IotGpioValue*val);获取id对应的GPIO输入电平状态,并将获取的电平值存入val指向的变量unsignedintIoTGpioGetInputVal(unsignedintid,IotGpioValue*val);华为海思的GPIO操作函数鸿蒙系统的GPIO操作函数鸿蒙系统的GPIO中断处理鸿蒙系统的GPIO中断处理(1/2)

只要GPIO的电平状态符合设定的中断触发条件,

系统就会暂停当前工作而执行GPIO中断处理函数,中断处理函数执行完成后,系统会恢复之前的工作。Hi3861的GPIO共有4种中断触发条件,可设置GPIO电平在高电平、低电平、下降沿(从高电平变成低电平的过程)与上升沿(从低电平变成高电平的过程)状态时触发中断。鸿蒙系统的GPIO中断处理(2/2)

在iot_gpio.h中提供的IoTGpioRegisterIsrFunc函数注册并设定GPIO的中断触发条件、中断处理函数等。unsignedintIoTGpioRegisterIsrFunc(unsignedintid,IotGpioIntTypeintType,IotGpioIntPolarityintPolarity,GpioIsrCallbackFuncfunc,char*arg);参数列表:id:用于指定GPIOintType:指定中断类型

值IOT_INT_TYPE_LEVEL表示电平(高/低电平)触发中断

值IOT_INT_TYPE_EDGE表示边沿(上升/下降沿)触发中断intPolarity:指定中断触发的电平状态

值IOT_GPIO_EDGE_FALL_LEVEL_LOW表示低电平或下降沿状态触发中断,具体由intType中断类型指定

值IOT_GPIO_EDGE_RISE_LEVEL_HIGH表示高电平或上升沿状态触发中断fu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论