【HarmonyOS HiSpark AI Camera试用连载 】Harmony应用编程之GPIO编程踩坑小记

   GPIO即通用型输入输出,通常GPIO的控制器都是通过分组的形式进行管理GPIO管脚的,比如:STM32中通常会将GPIO分组为A、B、C组等由不同的控制器进行管理。通过对每个IO所对应的的寄存器进行读写就可以完成对GPIO管脚的相应操作。包括:
1、设置IO口的方向:输入或者输出,Harmony的这个板子暂不支持高阻态;
2、设置IO口的模式:上拉、下拉、浮空等;
3、读写IO口的电平值:完成逻辑电平的读取或者输出;
4、设置外部中断:设置IO口的中断响应函数,以及相应的触发方式,同样的可以进行中断的禁止或者使能。

  HarmonyOS中常用GPIO驱动API接口节选:

功能分类 接口名 描述
GPIO读 GpioRead 读管脚电平值
GPIO写 GpioWrite 写管脚电平值
GPIO配置-1 GpioSetDir 设置管脚方向
GPIO配置-2 GpioGetDir 获取管脚方向
GPIO中断设置-1 GpioSetIrq 设置管脚对应的中断服务函数
GPIO中断设置-2 GpioUnSetIrq 取消管脚对应的中断服务函数
GPIO中断设置-3 GpioEnableIrq 使能管脚中断
GPIO中断设置-4 GpioDisableIrq 禁止管脚中断

注: 上述接口仅限在内核态使用,不支持在用户态使用。

1)如何根据原理图确定IO的引脚号
  本次使用的LED 的引脚由开发板原理图可知为GPIO2_3.
在这里插入图片描述
确定GPIO的管脚ID:
  不同SOC芯片由于其GPIO控制器型号、参数、以及控制器驱动的不同,GPIO管脚号的换算方式不一样。
Hi3516DV300 控制器管理12组GPIO管脚,每组8个。
GPIO号 = GPIO组索引 (0~11) * 每组GPIO管脚数(8) + 组内偏移
举例:GPIO2_3的GPIO号 = 2* 8 + 3 = 19

2)关于GPIO驱动API接口函数的使用
在这里插入图片描述
  编译的时候通过了,但是在链接的时候出现了错误,ld.lld:error:undefined symbol:xxxxxx,未定义error。
参考:https://device.harmonyos.com/cn/docs/develop/drive/oem_drive_gpio_des-0000001050058978 中的介绍,GPIO的驱动API接口仅限在内核态使用,不支持在用户态使用,所以即使编译通过了,在进行程序链接的时候也会因为没有相关的定义而failed。

注:来源于电子发烧友论坛
本人主页:https://bbs.elecfans.com/user/2105315/

猜你喜欢

转载自blog.csdn.net/qq_33475105/article/details/110947863