26#include "hpm_gpio_drv.h"
27#include "hpm_plic_drv.h"
83 inline bool Read()
override
94 inline void Write(
bool value)
override
181#if defined(GPIO_DI_GPIOZ)
184#elif defined(GPIO_DI_GPIOY)
187#elif defined(GPIO_DI_GPIOX)
190#elif defined(GPIO_DI_GPIOF)
193#elif defined(GPIO_DI_GPIOE)
196#elif defined(GPIO_DI_GPIOD)
199#elif defined(GPIO_DI_GPIOC)
219 GPIO_Type* controller =
nullptr;
221 uint32_t enabled_pin_count = 0u;
233 static uint16_t
ResolvePadIndex(GPIO_Type* gpio, uint32_t port, uint8_t pin);
238 static GPIO_Type* port_controller_map[
PORT_COUNT];
通用输入输出(GPIO)接口类。General Purpose Input/Output (GPIO) interface class.
HPM 平台 GPIO 驱动实现 / GPIO driver implementation for HPM platform.
GPIO_Type * gpio_
GPIO 控制器实例 / GPIO controller instance.
ErrorCode EnableInterrupt() override
使能当前引脚中断 / Enable GPIO interrupt for current pin.
static constexpr uint32_t INVALID_IRQ
无效 IRQ 标记 / Invalid IRQ marker.
static constexpr uint32_t PORT_COUNT
支持的端口数量 / Supported port count.
static constexpr uint16_t INVALID_PAD_INDEX
无效 PAD 标记 / Invalid PAD marker.
ErrorCode SetAnalogHighImpedance()
将当前 PAD 配置为模拟高阻 / Configure current pad to analog high-impedance.
static uint16_t ResolvePadIndex(GPIO_Type *gpio, uint32_t port, uint8_t pin)
根据控制器与端口引脚推导 IOC PAD 编号 / Resolve IOC PAD index from controller/port/pin tuple.
bool interrupt_enabled_
当前 pin IRQ 使能状态 / Per-instance IRQ enabled flag.
ErrorCode SetConfig(Configuration config) override
配置当前引脚模式 / Configure GPIO mode for current pin.
uint16_t pad_index_
IOC PAD 编号 / IOC PAD index.
bool Read() override
读取引脚电平 / Read current pin level.
void Write(bool value) override
写引脚电平 / Write output pin level.
static void CheckInterrupt(uint32_t port)
分发某一端口的 GPIO 中断回调 / Dispatch GPIO interrupt callbacks for one port.
uint32_t irq_
当前 port 对应 IRQ 号 / IRQ number for the current port.
ErrorCode DisableInterrupt() override
失能当前引脚中断 / Disable GPIO interrupt for current pin.
static constexpr uint32_t PIN_COUNT
每个端口引脚数 / Pins per port.
HPMGPIO(GPIO_Type *gpio, uint32_t port, uint8_t pin, uint32_t irq=INVALID_IRQ, uint16_t pad_index=INVALID_PAD_INDEX)
构造 HPM GPIO 对象 / Construct an HPM GPIO object.
uint8_t pin_
GPIO 引脚号 / GPIO pin index.
uint32_t port_
GPIO 端口号 / GPIO port index.
static HPMGPIO * map[PORT_COUNT][PIN_COUNT]
GPIO 对象映射表 / GPIO object dispatch map.
void libxr_hpm_gpio_check_interrupt(uint32_t port)
GPIO 中断分发的 C 接口 / C entry for GPIO interrupt dispatch.
端口级 IRQ 路由状态 / Shared port-level IRQ routing state.