54 lines
1.6 KiB
C
54 lines
1.6 KiB
C
#ifndef _BSP_GPIO_H
|
|
#define _BSP_GPIO_H
|
|
|
|
enum {
|
|
GPIOxSET = 0,
|
|
GPIOxCLR,
|
|
GPIOx,
|
|
GPIOxDIR,
|
|
GPIOxDE,
|
|
GPIOxFEN,
|
|
GPIOxDRV,
|
|
GPIOxPU,
|
|
GPIOxPD,
|
|
GPIOxPU200K,
|
|
GPIOxPD200K,
|
|
GPIOxPU300,
|
|
GPIOxPD300,
|
|
};
|
|
|
|
typedef struct {
|
|
psfr_t sfr; //GPIO SFR ADDR
|
|
u8 num;
|
|
u8 type; //type = 1, 没有300R的强上下拉电阻。 type = 0, 普通IO, 有内部300R上下拉电阻。
|
|
u16 pin;
|
|
} gpio_t;
|
|
|
|
#define bsp_gpio_cfg_init(x, y) gpio_cfg_init(x, y)
|
|
|
|
void gpio_cfg_init(gpio_t *g, u8 io_num); //根据GPIO number初始化GPIO结构体
|
|
u8 get_adc_gpio_num(u8 adc_ch);
|
|
void adcch_io_pu10k_enable(u8 adc_ch);
|
|
|
|
///port wakeup and interrupt
|
|
|
|
#define PORT_INT0_VECTOR 0
|
|
#define PORT_INT1_VECTOR 1
|
|
#define PORT_INT2_VECTOR 2
|
|
#define PORT_INT3_VECTOR 3
|
|
#define PORT_INT4_VECTOR 4
|
|
#define PORT_INT5_VECTOR 5
|
|
#define PORT_INT6_VECTOR 6
|
|
#define PORT_INT7_VECTOR 7
|
|
|
|
void port_var_init(void);
|
|
void port_irq_register(int irq_num, isr_t isr);
|
|
void port_irq_free(int irq_num);
|
|
u8 port_wakeup_get_status(void);
|
|
bool port_wakeup_init(u8 io_num, u8 edge, u8 pupd_sel); //参数edge: 0->上升沿, 1->下降沿, 参数pupd_sel: 0->不开内部上拉, 1->开内部上拉, 2->开内部下拉
|
|
bool port_wakeup_exit(u8 io_num);
|
|
void wko_wakeup_init(u8 edge);
|
|
void wko_wakeup_exit(void);
|
|
|
|
#endif // _BSP_GPIO_H
|