作者:坚果 公众号:"大前端之旅" 华为HDE,InfoQ签约作者,OpenHarmony布道师,擅长HarmonyOS应用开发、跨平台Flutter开发、熟悉服务卡片开发、小程序开发、GO的相关开发。开源项目gin-vue-admin成员之一,先后在CSDN等平台分享了多篇技术文章,在“战码先锋”活动中作为大队长,累计培养三个小队长,带领100 队员完成Pr的提交合入。
GPIO 概述
GPIO(General-purpose input/output)即通用型输入输出,用于控制芯片引脚的数字输入和数字输出。通常,GPIO 控制器通过分组的方式管理所有 GPIO 管脚,每组 GPIO 有一个或多个寄存器与之关联,通过读写寄存器完成对 GPIO 管脚的操作。GPIO 是芯片上一根能完成多种功能的管脚,用户可以通过 GPIO 口和硬件进行数据交互(如UART),控制硬件工作(如 LED,蜂鸣器等),读取硬件的工作状态信号(如中断信号)等。
GPIO 接口定义了操作 GPIO 管脚的标准方法集合,包括:
- 设置管脚方向:方向可以是输入或者输出(暂不支持高阻态)
- 读写管脚电平值:电平值可以是低电平或高电平
- 设置管脚中断服务函数:设置一个管脚的中断响应函数,以及中断触发方式
- 使能和禁止管脚中断:禁止或使能管脚中断
GPIO 模块相关 API
接口名 | 描述 |
---|---|
unsigned int IoTGpioInit(unsigned int id) | 确定GPIO管脚号 |
unsigned int IoTGpioSetDir(unsigned int id, IotGpioDir dir) | 设置管脚方向 |
unsigned int IoTGpioSetOutputVal(unsigned int id, IotGpioValue val); | 设置管脚电平 |
unsigned int IoTGpioRegisterIsrFunc(unsigned int id, IotGpioIntType intType, IotGpioIntPolarity intPolarity,GpioIsrCallbackFunc func, char *arg); | 设置管脚中断 |
GPIO 接口调用举例如下:
代码功能:定义 GPIO_00 号口为输出模式且输出高电平。
代码语言:javascript复制#include "iot_gpio.h"
IoTGpioInit(GPIO_00);
IoTGpioSetDir(GPIO_00 , IOT_GPIO_DIR_OUT);
IoTGpioSetOutputVal(GPIO_00 , IOT_GPIO_EDGE_RISE_LEVEL_HIGH);