在之後的函數中,經常會看到一個整型flag參數,此參數代表了對應PIN所設置的功能狀態。flag中的每個位都對應一種功能或狀態,下面用一張圖表示出來:
struct gpio_driver_api {
gpio_config_t config; gpio_write_t write; gpio_read_t read; gpio_manage_callback_t manage_callback; gpio_enable_callback_t enable_callback; gpio_disable_callback_t disable_callback; gpio_api_get_pending_int get_pending_int; }; |
struct device *port
|
/**
* @brief 運行時每個設備實例在內存中的結構體 * @param device_config 創建時的配置信息 * @param driver_api 結構體指針,包含設備類型的API函數。 * 這些指針在初始化時由驅動填充。 * @param driver_data 驅動實例數據. 僅爲驅動使用 */ struct device { struct device_config *config; const void *driver_api; void *driver_data; }; |
static inline int gpio_pin_configure(struct device *port, uint8_t pin,
int flags) { const struct gpio_driver_api *api = port->driver_api; return api->config(port, GPIO_ACCESS_BY_PIN, pin, flags); } |
static inline int gpio_port_configure(struct device *port, int flags)
{ const struct gpio_driver_api *api = port->driver_api; return api->config(port, GPIO_ACCESS_BY_PORT, 0, flags); } |