#ifndef LUAT_GPIO_H #define LUAT_GPIO_H #include "luat_base.h" #include "luat_gpio_legacy.h" // 若bsp没有定义最大PIN编号, 那么默认给个128吧 #ifdef LUAT_USE_DRV_GPIO #undef LUAT_GPIO_PIN_MAX #define LUAT_GPIO_PIN_MAX 254 #else #ifndef LUAT_GPIO_PIN_MAX #define LUAT_GPIO_PIN_MAX (127) #endif #endif /** * @defgroup luatos_device_gpio GPIO接口 * @{ */ #define LUAT_GPIO_LOW (Luat_GPIO_LOW) ///< GPIO配置为低电平 #define LUAT_GPIO_HIGH (Luat_GPIO_HIGH) ///< GPIO配置为高电平 #define LUAT_GPIO_OUTPUT (Luat_GPIO_OUTPUT) ///< GPIO配置为输出模式 #define LUAT_GPIO_INPUT (Luat_GPIO_INPUT) ///< GPIO配置为输入模式 #define LUAT_GPIO_IRQ (Luat_GPIO_IRQ) ///< GPIO配置为中断模式 #define LUAT_GPIO_DEFAULT (Luat_GPIO_DEFAULT) ///< GPIO配置为默认模式,EC618平台,上下拉只对输出模式有效,输入模式只有默认上下拉或者取消上下拉,普通的GPIO配置为LUAT_GPIO_DEFAULT,表示完全关闭上下拉;AGPIO软件上不支持配置上下拉,即使配置了也无效,一直是硬件开机或者复位时的默认状态 #define LUAT_GPIO_PULLUP (Luat_GPIO_PULLUP) ///< GPIO配置为上拉模式 #define LUAT_GPIO_PULLDOWN (Luat_GPIO_PULLDOWN)///< GPIO配置为下拉模式 #define LUAT_GPIO_RISING_IRQ (Luat_GPIO_RISING) ///<上升沿中断 #define LUAT_GPIO_FALLING_IRQ (Luat_GPIO_FALLING)///< 下降沿中断 #define LUAT_GPIO_BOTH_IRQ (Luat_GPIO_BOTH) ///< 上升沿 下降沿都中断 #define LUAT_GPIO_HIGH_IRQ (Luat_GPIO_HIGH_IRQ) ///< GPIO配置为高电平中断模式 #define LUAT_GPIO_LOW_IRQ (Luat_GPIO_LOW_IRQ) ///< GPIO配置为低电平模式 #define LUAT_GPIO_NO_IRQ (0xff) ///< GPIO没有中断模式 #define LUAT_GPIO_MAX_ID (Luat_GPIO_MAX_ID) ///< 最大GPIO序号 //无效的GPIO,用作某些函数引脚不指定时使用 #define LUAT_GPIO_NONE (0xff) /** * @brief GPIO控制参数 */ typedef struct luat_gpio_cfg { int pin; /**<引脚*/ uint8_t mode;/**