HarmonyOS技术社区 · 2020年11月04日

【开发板试用报告】学习GPIO编程

三色灯

1) 初始化GPIO设备,GpioInit();

2) 复用GPIO引脚,IoSetFunc(WIFI_IOT_IO_NAME_GPIO_10, WIFI_IOT_IO_FUNC_GPIO_10_GPIO);

3) 设置GPIO引脚为输出方向,GpioSetDir(WIFI_IOT_IO_NAME_GPIO_10, WIFI_IOT_GPIO_DIR_OUT);

4) 设置GPIO引脚的输出电平值为1(灯亮),GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_10, 1);

5) 设置GPIO引脚的输出电平值为0(灯灭),GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_10, 0);

结果图:

55c68ca77a3fa78209c3727e4d5b81628a0e95.gif

按键

1) 初始化GPIO设备,GpioInit();

2) 复用GPIO引脚,IoSetFunc(WIFI_IOT_IO_NAME_GPIO_8, WIFI_IOT_IO_FUNC_GPIO_8_GPIO);

3) 设置GPIO引脚为输入方向,GpioSetDir(WIFI_IOT_IO_NAME_GPIO_8, WIFI_IOT_GPIO_DIR_IN);

4) 设置GPIO引脚初始电平拉高,IoSetPull(WIFI_IOT_IO_NAME_GPIO_8, WIFI_IOT_IO_PULL_UP);

5) 设置按键事件为边沿触发方式,具体为下降沿触发(按键按下),GpioRegisterIsrFunc(WIFI_IOT_IO_NAME_GPIO_8, WIFI_IOT_INT_TYPE_EDGE, WIFI_IOT_GPIO_EDGE_FALL_LEVEL_LOW, OnButtonPressed, arg);

6) 设置按键事件为边沿触发方式,具体为上升沿触发(按键释放),GpioRegisterIsrFunc(WIFI_IOT_IO_NAME_GPIO_8, WIFI_IOT_INT_TYPE_EDGE, WIFI_IOT_GPIO_EDGE_RISE_LEVEL_HIGH, OnButtonReleased, arg);

按照唐老师的教程:https://harmonyos.51cto.com/p...

结果图:

图片.png

蜂鸣器

1) 设置CONFIG_PWM_SUPPORT=y,文件./vendor/hisi/hi3861/hi3861/build/config/usr_config.mk;

2) 初始化GPIO设备,GpioInit();

3) 复用GPIO引脚,IoSetFunc(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_IO_FUNC_GPIO_9_PWM0_OUT);

4) 设置GPIO引脚为输出方向,GpioSetDir(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_GPIO_DIR_OUT);

5) 初始化PWM设备,PwmInit(WIFI_IOT_PWM_PORT_PWM0);

6) 输出PWM信号,PwmStart(WIFI_IOT_PWM_PORT_PWM0, 5 1000, 40 1000);

7) 停止PWM信号输出,PwmStop(WIFI_IOT_PWM_PORT_PWM0);

(PS.代码中attr.stack_size = 1024,如果代码中是attr.stack_size = 512,运行会报错;)


作者:HarryP0tter

想了解更多内容,请访问:
51CTO和华为官方战略合作共建的鸿蒙技术社区
https://harmonyos.51cto.com#jssq

推荐阅读
关注数
3010
内容数
446
华为鸿蒙相关技术,活动及资讯,欢迎关注及加入创作
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息