85 lines
1.8 KiB
C
85 lines
1.8 KiB
C
|
#ifndef _DRV_GPIO_H_
|
||
|
#define _DRV_GPIO_H_
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
#include "kit_macro.h"
|
||
|
|
||
|
#define GPIO_GET_PIN(io) ((uint8_t)((io) >> 16))
|
||
|
#define GPIO_GET_PORT(io) ((uint8_t)((io) >> 24))
|
||
|
#define GPIO_GET_PIN_BIT(io) ((uint16_t)(io))
|
||
|
#define GPIO_PORT_PIN(port, pin) (((port) << 24) + ((pin) << 16) + (1 << (pin)))
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
kGpioPort_A = 0,
|
||
|
kGpioPort_B,
|
||
|
kGpioPort_C,
|
||
|
kGpioPort_D,
|
||
|
kGpioPort_E,
|
||
|
kGpioPort_F,
|
||
|
kGpioPort_G,
|
||
|
kGpioPort_End,
|
||
|
}GpioPort;
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
kGpioPin_0 = 0,
|
||
|
kGpioPin_1,
|
||
|
kGpioPin_2,
|
||
|
kGpioPin_3,
|
||
|
kGpioPin_4,
|
||
|
kGpioPin_5,
|
||
|
kGpioPin_6,
|
||
|
kGpioPin_7,
|
||
|
kGpioPin_8,
|
||
|
kGpioPin_9,
|
||
|
kGpioPin_10,
|
||
|
kGpioPin_11,
|
||
|
kGpioPin_12,
|
||
|
kGpioPin_13,
|
||
|
kGpioPin_14,
|
||
|
kGpioPin_15,
|
||
|
}GpioPin;
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
kGpioStatus_Low,
|
||
|
kGpioStatus_High,
|
||
|
kGpioStatus_Err,
|
||
|
kGpioStatus_End,
|
||
|
}GpioStatus;
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
kGpioMode_Input_Floating, //浮空输入
|
||
|
kGpioMode_Output_PP, //推挽输出
|
||
|
kGpioMode_Comm_Rx, // 通信接收模式 复用推挽输出
|
||
|
kGpioMode_Comm_Tx = kGpioMode_Comm_Rx, //通信发送模式复用推挽输出
|
||
|
kGpioMode_Adc,
|
||
|
kGpioMode_End,
|
||
|
}GpioMode;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
GpioMode mode;
|
||
|
GpioStatus init_st;
|
||
|
uint32_t io;
|
||
|
GpioPort port_group;
|
||
|
GpioPin pin_idx;
|
||
|
}GpioArray;
|
||
|
|
||
|
kit_ret_e drv_gpio_init(const GpioArray *array, uint16_t cnt);
|
||
|
GpioStatus drv_gpio_get_pin_status(uint16_t idx);
|
||
|
kit_ret_e drv_gpio_set_pin_status(uint16_t idx, GpioStatus status);
|
||
|
uint32_t drv_gpio_get_actual_io(uint16_t idx);
|
||
|
void drv_gpio_set_af(uint8_t port, uint8_t pin, uint8_t af);
|
||
|
kit_ret_e drv_gpio_set_pin_mode(uint8_t io_idx, GpioMode mode);
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif
|