#ifndef _GPIO_H #define _GPIO_H #include "stm32f4xx.h" /* GPIO引脚 */ #define gpio_pin_0 (1<<0) #define gpio_pin_1 (1<<1) #define gpio_pin_2 (1<<2) #define gpio_pin_3 (1<<3) #define gpio_pin_4 (1<<4) #define gpio_pin_5 (1<<5) #define gpio_pin_6 (1<<6) #define gpio_pin_7 (1<<7) #define gpio_pin_8 (1<<8) #define gpio_pin_9 (1<<9) #define gpio_pin_10 (1<<10) #define gpio_pin_11 (1<<11) #define gpio_pin_12 (1<<12) #define gpio_pin_13 (1<<13) #define gpio_pin_14 (1<<14) #define gpio_pin_15 (1<<15) /* 中断注册函数指针 */ typedef void (*CallBack)(void); /* GPIO外设 */ typedef struct GPIO { char *name; uint16_t gpio_pin; char *gpio_mode; int (*gpio_init)(struct GPIO *pDev, uint16_t gpio_pin, char *gpio_mode, char *gpio_pupd); void (*gpio_deinit)(struct GPIO *pDev); void (*gpio_set_output)(struct GPIO *pDev, uint16_t gpio_pin, uint8_t voltage); uint16_t(*gpio_read_output)(struct GPIO *pDev); uint16_t(*gpio_read_input)(struct GPIO *pDev); void (*gpio_open_irq)(struct GPIO *pDev, uint8_t GPIO_PinSource, uint8_t EXTI_Trigger, uint8_t Priority, CallBack irq_handle); void (*gpio_close_irq)(struct GPIO *pDev, uint8_t GPIO_PinSource); void *gpio_priv_data; } gpio_obj_t; /* 获取GPIO外设句柄 */ gpio_obj_t *get_gpio_obj(char *name); #endif