GPIO 概述

2023-02-23 11:32:47 浏览数 (1)

作者:坚果 公众号:"大前端之旅" 华为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);

0 人点赞