CN / EN
文档反馈
感谢关注汇顶文档,期待您的宝贵建议!
感谢您的反馈,祝您愉快!

APP GPIO_TE驱动

结构体

app_gpiote_param_t

结构体定义如下:

表 34 app_gpiote_param_t结构体成员
成员 描述 取值

app_io_type_t type

设置IO类型(GPIOA/NORMAL/GPIOB/GPIOC/AON_GPIO/MSIO)

参考app_io_evt_t中定义

uint32_t pin

选择IO引脚

参考app_io_init_t中定义

app_io_mode_t mode

中断触发模式

该参数的取值可以是下列值中的任意一个:

  • APP_IO_MODE_IT_RISING(上升沿触发)
  • APP_IO_MODE_IT_FALLING(下降沿触发)
  • APP_IO_MODE_IT_BOTH_EDGE(上升下降沿触发,GR551x没有该模式)
  • APP_IO_MODE_IT_HIGH(高电平触发)
  • APP_IO_MODE_IT_LOW(低电平触发)

app_io_pull_t pull

设置IO上拉/下拉/浮空

该参数的取值可以是下列值中的任意一个:

  • APP_IO_NOPULL(浮空)
  • APP_IO_PULLUP(上拉)
  • APP_IO_PULLDOWN(下拉)

app_io_callback_t io_evt_cb

中断回调函数指针

用户自定义

详细信息请参考文件:SDK_Folder\drivers\inc\app_gpiote.h

接口函数

表 35 GPIO_TE驱动接口函数
API 芯片
GR551x GR5526 GR5x25 GR533x GR5405

app_gpiote_init

Y

Y

Y

Y

Y

app_gpiote_config

Y

Y

Y

Y

Y

app_gpiote_deinit Y Y Y Y Y

app_gpiote_init

表 36 app_gpiote_init接口
函数原型

uint16_t app_gpiote_init(const app_gpiote_param_t *p_params, uint8_t table_cnt)

功能说明

初始化多组GPIO,并配置多组GPIO中断,并注册中断回调函数

输入参数
  • p_params:初始化参数的结构体指针
  • table_cnt:配置的IO数量
返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

回调函数形式参照typedef void (*app_io_callback_t)(app_io_evt_t *p_evt);

HAL层已经实现中断标志位的清理,用户不用关心中断标志的清理,回调函数根据返回事件类型进行相应的处理即可。

app_gpiote_config

表 37 app_gpiote_config接口
函数原型

uint16_t app_gpiote_config(const app_gpiote_param_t *p_config)

功能说明

初始化GPIO,并配置GPIO中断,并注册中断回调函数(单个)

输入参数

p_config:初始化参数的结构体指针

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

app_gpiote_deinit

表 38 app_gpiote_deinit接口
函数原型 uint16_t app_gpiote_deinit(app_io_type_t type, uint32_t pin)
功能说明 反初始化GPIO,并注销中断回调函数(单个)
输入参数
  • type:IO类型
  • pin:IO引脚

返回值 APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义
备注

示例工程

GPIO_TE

示例工程主要调用GPIO_TE驱动接口,配置GPIO中断输入模式,实现按键输入功能。工程路径:SDK_Folder\projects\peripheral\gpio\app_gpio

初始化参数

  1. IO引脚定义:

    定义key0和key1按键输入引脚。

    #define APP_GPIO_KEY0_PIN        APP_KEY_UP_PIN
    #define APP_GPIO_KEY0_TYPE       APP_KEY_UP_IO_TYPE
    
    #define APP_GPIO_KEY1_PIN        APP_KEY_OK_PIN
    #define APP_GPIO_KEY1_TYPE       APP_KEY_OK_IO_TYPE
    

    具体引脚定义,参见board_SK.h,如下key0按键输入引脚为AON_GPIO_1;key1按键输入为AON_GPIO_0。

    /*******KEY DRIVER IO CONFIG********************/
    #define APP_KEY_UP_IO_TYPE                  APP_IO_TYPE_AON
    #define APP_KEY_DOWN_IO_TYPE                APP_IO_TYPE_AON
    #define APP_KEY_UP_PIN                      APP_IO_PIN_1
    #define APP_KEY_DOWN_PIN                    APP_IO_PIN_0
    
  2. 定义初始化结构体,用于中断引脚、中断方式和中断回调函数。
    const app_gpiote_param_t gpiote_param[] =
    {
        {APP_GPIO_KEY0_TYPE, APP_GPIO_KEY0_PIN, APP_IO_MODE_IT_FALLING, 
                                  APP_IO_PULLUP, app_io_event_handler},
        {APP_GPIO_KEY1_TYPE, APP_GPIO_KEY1_PIN, APP_IO_MODE_IT_FALLING, 
                                  APP_IO_PULLUP, app_io_event_handler},
    };
    

重要函数

实现GPIO中断配置

app_gpiote_init(gpiote_param, sizeof(gpiote_param) / sizeof(app_gpiote_param_t))

测试验证

连接开发板到PC端,打开串口调试助手,连接串口。分别按下key0和key1,串口打印如下。

说明:

需根据原理图了解key0和key1对应的物理按键。

 
KEY0 pressed.
 
KEY1 pressed.

扫描关注

打开微信,使用“扫一扫”即可关注。