跳到主要内容

GPIO(通用输入输出)

LibXR::GPIO 提供跨平台的通用输入输出(General Purpose Input/Output)抽象接口,支持多种输入输出模式及中断回调机制。用户可继承此接口实现具体平台的 GPIO 控制逻辑。

接口概览

配置枚举

enum class Direction : uint8_t {
INPUT, // 输入模式
OUTPUT_PUSH_PULL, // 推挽输出
OUTPUT_OPEN_DRAIN, // 开漏输出
FALL_INTERRUPT, // 下降沿中断
RISING_INTERRUPT, // 上升沿中断
FALL_RISING_INTERRUPT // 双沿中断
};

enum class Pull : uint8_t {
NONE, // 无上下拉
UP, // 上拉
DOWN // 下拉
};

配置结构体

struct Configuration {
Direction direction; // 引脚方向
Pull pull; // 上下拉设置
};

回调类型

using Callback = LibXR::Callback<>;

构造与配置

GPIO();  // 默认构造函数
virtual ErrorCode SetConfig(Configuration config) = 0;

引脚控制

virtual bool Read() = 0;              // 读取引脚电平
virtual ErrorCode Write(bool value) = 0; // 写入引脚电平

中断控制

virtual ErrorCode EnableInterrupt() = 0;   // 使能中断
virtual ErrorCode DisableInterrupt() = 0; // 禁用中断

注册事件回调

using Callback = LibXR::Callback<>;
ErrorCode RegisterCallback(Callback callback); // 注册中断处理函数

特性总结

  • 支持输入/输出/中断等多种模式配置;
  • 提供类型安全的配置结构体;
  • 事件处理使用统一回调接口,可在 ISR 或任务中触发;
  • 平台实现需完整覆盖虚函数定义;
  • 可与其他 LibXR 模块配合使用,如 Topic、Timer 等。