发 帖  
原厂入驻New
[资料]

Harmony应用编程之GPIO编程踩坑小记

2020-11-26 21:05:22  110 鸿蒙系统
分享
GPIO即通用型输入输出,通常GPIO的控制器都是通过分组的形式进行管理GPIO管脚的,比如:STM32中通常会将GPIO分组为A、B、C组等由不同的控制器进行管理。通过对每个IO所对应的的寄存器进行读写就可以完成对GPIO管脚的相应操作。包括:
1、设置IO口的方向:输入或者输出,HARMony的这个板子暂不支持高阻态;
2、设置IO口的模式:上拉、下拉、浮空等;
3、读写IO口的电平值:完成逻辑电平的读取或者输出;
4、设置外部中断:设置IO口的中断响应函数,以及相应的触发方式,同样的可以进行中断的禁止或者使能。
     在HarmonyOS中常用的驱动API的接口函数如下:
功能API函数名描述
GPIO读GpioRead读管脚电平值
GPIO写GpioWrite写管脚电平值
GPIO配置1GpioSetDir设置管脚方向
GPIO配置2GpioGetDir获取管脚方向
GPIO中断配置1GpioSetirq设置管脚对应的中断服务函数
GPIO中断配置2GpioUnSetIrq  取消管脚对应的中断服务函数
GPIO中断配置3GpioEnableIrq使能管脚中断
GPIO中断配置4GpioDisableIrq禁止管脚中断


1)如何根据原理图确定IO的引脚号

     由上图,LED使用的引脚是GPIO2_3,不同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。
1
分享淘帖 显示全部楼层

只有小组成员才能发言,加入小组>>

1135个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表