大家好,今天小白给大家介绍一下,关于mdm9206 threadx_os的gpio操作相关的api,希望能和大家一起交流学习.

1、gpio模块概述

SoC具有许多功能,但由于尺寸缩小,通常会受到限制, 通过在软件控制下结合硬件以灵活地复用给定物理引脚上的若干不同功能,可以克服此限制。该模块公开了一个接口,允许其客户端在SoC上的一组物理GPIO引脚上管理所需的功能。 此接口的最常见用法是为离散输入或输出配置引脚,以实现与外围设备,传感器或执行器的交互。该模块要求客户端在SoC上使用物理引脚编号,查阅硬件原理图或使用设备配置数据库确定正确的引脚编号。

2、相关宏定义

typedef enum
{
  QAPI_GPIO_2MA_E     = 0,                 // Specify a 2 mA drive.
  QAPI_GPIO_4MA_E     = 0x1,             // Specify a 4 mA drive.
  QAPI_GPIO_6MA_E     = 0x2,             // Specify a 6 mA drive.
  QAPI_GPIO_8MA_E     = 0x3,             // Specify an 8 mA drive.
  QAPI_GPIO_10MA_E    = 0x4,            // Specify a 10 mA drive.
  QAPI_GPIO_12MA_E    = 0x5,            // Specify a 12 mA drive.
  QAPI_GPIO_14MA_E    = 0x6,            // Specify a 14 mA drive.
  QAPI_GPIO_16MA_E    = 0x7,            // Specify a 16 mA drive.

QAPI_GPIO_INVALID_STRENGTH_E = 0x7fffffff /* Placeholder - Do not use */

}qapi_GPIO_Drive_t;

typedef enum
{
  QAPI_GPIO_NO_PULL_E    = 0x0,             // Specify no pull.
  QAPI_GPIO_PULL_DOWN_E  = 0x1,         // Pull the GPIO down.
  QAPI_GPIO_KEEPER_E  = 0x2,                // Keep the GPIO as it is.
  QAPI_GPIO_PULL_UP_E    = 0x3,             // Pull the GPIO up.

QAPI_GPIO_INVALID_PULL_E = 0x7fffffff  // Placeholder - Do not use

}qapi_GPIO_Pull_t;

typedef enum
{
  QAPI_GPIO_INPUT_E  = 0,                        // Specify the pin as an input to the SoC.
  QAPI_GPIO_OUTPUT_E = 1,                     // Specify the pin as an output to the SoC.

QAPI_GPIO_INVALID_DIR_E = 0x7fffffff    // Placeholder - Do not use

}qapi_GPIO_Direction_t;

3、API介绍

a. qapi_Status_t qapi_TLMM_Get_Gpio_ID ( qapi_TLMM_Config_t ∗qapi_TLMM_Config, qapi_GPIO_ID_t ∗ qapi_GPIO_ID )

功能:此功能为指定的GPIO提供唯一的访问ID。 这是访问GPIO配置API所必需的。

入参:

in: qapi_TLMM_Config, 配置数据的指针

out: qapi_GPIO_ID,指向存储访问ID的位置的指针。

涉及类型:

typedef struct
 {
  uint32_t              pin;           // Physical pin number.
  uint32_t              func;           // Pin function select.
  qapi_GPIO_Direction_t dir;        // Direction (input or output)
  qapi_GPIO_Pull_t      pull;         // Pull value.
  qapi_GPIO_Drive_t     drive;        // Drive strength.

}qapi_TLMM_Config_t;

typedef uint16_t qapi_GPIO_ID_t;

typedef uint16_t qapi_GPIO_ID_t;

返回值:

QAPI_OK – 引脚GPIO ID已成功创建

QAPI_ERR – 引脚GPIO当前正在使用或不可编程

b. qapi_Status_t qapi_TLMM_Config_Gpio ( qapi_GPIO_ID_t qapi_GPIO_ID,qapi_TLMM_Config_t ∗ qapi_TLMM_Config )

功能:此函数根据作为参数传入的配置结构引用中指定的一组字段配置SoC引脚。

入参:

in: qapi_GPIO_ID, 待配置的gpio id

in: qapi_TLMM_Config, 填充好的配置参数的指针

返回值:

QAPI_OK:配置成功

QAPI_ERR:配置失败

c. qapi_Status_t qapi_TLMM_Drive_Gpio ( qapi_GPIO_ID_t qapi_GPIO_ID, uint32_t pin, qapi_GPIO_Value_t value )

功能:此功能将已配置为通用输出功能的引脚设为成指定电平值。

in:qapi_GPIO_ID,引脚id

in:pin, 要配置的引脚号

in:value,待设置的值。

涉及类型:

typedef enum
{
  QAPI_GPIO_LOW_VALUE_E,       // Drive the output LOW.
  QAPI_GPIO_HIGH_VALUE_E,           // Drive the output HIGH.

QAPI_GPIO_INVALID_VALUE_E = 0x7fffffff    // Placeholder - Do not use

}qapi_GPIO_Value_t;

返回值:

QAPI_OK:设置成功

QAPI_ERR:设置失败

4、用法举例

//第一步:变量定义:

qapi_GPIO_ID_t gpio_id;
qapi_TLMM_Config_t tlmm_config;
qapi_Status_t status = QAPI_OK;

//第二步:结构体填充
tlmm_config.pin = 13;
tlmm_config.func = 1                                           // Using the functionality tied to pin mux value 1
tlmm_config.dir = QAPI_GPIO_INPUT_E;
tlmm_config.pull = QAPI_GPIO_PULL_DOWN_E;
tlmm_config.drive = QAPI_GPIO_2MA_E;         // drive is for output pins, specify the default here

//第三步:获取带配置引脚的gpio_id
status = qapi_TLMM_Get_Gpio_ID( &tlmm_config, &gpio_id);   //获取gpio_id
if (status == QAPI_OK)
{

//第四步:将填充好的结构体以及获取到的gpio_id传给该接口用以配置相应的引脚

status = qapi_TLMM_Config_Gpio(gpio_id, &tlmm_config);    
 if (status != QAPI_OK)
 {
    // Handle failed case here
 }

//第五步:设置引脚电平(也可以是其他操作。)

qapi_TLMM_Drive_Gpio(gpio_id_tbl[pin_gpio], gpio_map_tbl[pin_gpio].gpio_id, QAPI_GPIO_HIGH_VALUE_E);
}

5、总结

本篇简单介绍了gpio操作相关的API,并给出了一个简单的示例程序以供参考,欢迎一起学习交流。

基于mdm9206 threadx_os的gpio操作相关API介绍相关推荐

  1. 基于mdm9206 threadx_os的spi操作相关API介绍

    大家好,今天小白给大家介绍一下,关于mdm9206 threadx_os的spi操作相关的API,希望能和大家一起交流学习. 一. SPI简介 SPI,是英语Serial Peripheral Int ...

  2. 基于mdm9206 threadx_os的timer操作相关API介绍

    大家好,今天小白给大家介绍一下,关于mdm9206 threadx_os的timer操作相关的api,希望能和大家一起交流学习. 一 . 概述 本篇介绍的接口是实现高级时间服务(ATS)计时器服务. ...

  3. 基于mdm9206 threadx_os的adc操作相关API介绍

    大家好,今天小白给大家介绍一下,关于mdm9206 threadx_os的adc操作相关的API,希望能和大家一起交流学习. 1 ADC简介 模数转换器(ADC)允许对模拟信号进行采样和数字表示. S ...

  4. 基于mdm9206 threadx_os的I2c操作相关API介绍

    大家好,今天小白给大家介绍一下,关于mdm9206 threadx_os的I2c操作相关的API,希望能和大家一起交流学习. 一:I2C简介 I2C是一种2线总线,用于将低速外设连接到处理器或微控制器 ...

  5. 关于mdm9206 threadx_os的I2c操作相关的API,

    大家好,今天小白给大家介绍一下,关于mdm9206 threadx_os的I2c操作相关的API,希望能和大家一起交流学习. 一:I2C简介 I2C是一种2线总线,用于将低速外设连接到处理器或微控制器 ...

  6. VB 文件常用操作相关API

    下面是windows中提供的对于文件进行操作的API函数及其功能: Windows API函数 功能 CloseHandle 关闭一个内核对象.其中包括文件.文件映射.进程.线程.安全和同步对象等.涉 ...

  7. W806 基于Arduino开发的GPIO操作示例,勇于尝新

    W806 基于Arduino的点灯实验的 一.写在前面 1. W806芯片参数: 2. MCU 特性: 3. 供电: 二.环境准备,添加支持包 三.打开永恒的LED测试 四.总结 一.写在前面 w80 ...

  8. Win32路径操作相关API

    一.路径截断与合并 PathRemoveArgs   去除路径的参数 PathRemoveBackslash 去除路径最后的反斜杠 "\" PathAddBackslash 在路径 ...

  9. Hibernate基础学习(二)—Hibernate相关API介绍

    一.Hibernate的核心接口 所有的Hibernate应用中都会访问Hibernate的5个核心接口. (1)Configuration接口: 配置Hibernate,启动Hibernate,创建 ...

最新文章

  1. python websocket例程_python 实现websocket
  2. springboot websocket_SpringBoot 集成 WebSocket 实现前后端消息互传
  3. mysql5.7是测试版本吗_mysql免安装版本测试(mysql-5.7.18-winx64)
  4. DreamweaverCS4搭建配置php本地站点(图文教程)- 教程篇
  5. php pdo dblib,PHP DBlib PDO问题
  6. LINUX 安装 PHP5.6.13
  7. 浙江省计算机数据库三级报名,浙江省计算机等级考试三级数据库技术
  8. make[1]: *** [storage/perfschema/unittest/CMakeFiles/pfs_connect_attr-t.dir/all] 错误 2 解决方法...
  9. h264文件视频存储格式和音频存储格式
  10. 快手磁力金牛和小店通的区别
  11. 队列 front rear
  12. 从2T-12.8T 一颗芯片全搞定
  13. 好嗨游戏:战火重燃!2019LPL夏季赛精彩看点全盘点! || 附夏季赛赛程表
  14. o2o实战报错:addShopImg error:null / character to be escaped is missing
  15. 2020年 Web 开发的最佳编程语言
  16. WSUS服务器的详细配置和部署
  17. 频率、周期、角频率的概念
  18. 数学——[0,+∞[ 的意思
  19. 阿里刘振飞:聚安全人之力 为全社会赋能
  20. Ubuntu下bochs详细安装步骤(超详细!)

热门文章

  1. 7-1 电话聊天狂人 (20 分)
  2. 详解电路中GND和GROUND、VCC,VDD,VEE,VSS解释-KIA MOS管
  3. android真机调试三星,Windows 10中可以运行三星手机的安卓应用
  4. 干货 | 拆解FPGA芯片,带你深入了解其原理
  5. GGB如何画一个任意移动的半椭圆
  6. 锐洋java web打印控件_锐洋Java web打印控
  7. 苹果电脑可以进行数据恢复吗
  8. 赛码网输入注意事项 Python
  9. pycharm mysql 安装_pycharm安装mysql驱动包
  10. 中外学前教育史复习要点