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 等。