/* 单根 GPIO 的方向与电平。74HC595 的三根线、五路 PG/FLT、风扇 TACH 都走这里。 */ #ifndef HAL_GPIO_H #define HAL_GPIO_H #include "hal_err.h" #ifdef __cplusplus extern "C" { #endif typedef enum { HAL_GPIO_INPUT = 0, HAL_GPIO_INPUT_PULLUP, HAL_GPIO_OUTPUT, } hal_gpio_mode_t; hal_err_t hal_gpio_config(int pin, hal_gpio_mode_t mode); /* 写一个没配成输出的脚返回 HAL_ERR_ARG,不是悄悄成功 —— 「把输入脚当输出用」是 PCA9555 那条禁令(计划 A6)的 GPIO 版本, 在宿主机测试里就要响。 */ hal_err_t hal_gpio_write(int pin, int level); /* level 用出参,是为了把「读到低电平」和「读失败」分开。 */ hal_err_t hal_gpio_read(int pin, int *level); #ifdef __cplusplus } #endif #endif /* HAL_GPIO_H */