GPIO

Macros

gpio pin

参考 bflb_gpio.h 文件,不详细列出。

警告

相同系列芯片引脚数会有区别,注意区分

gpio mode

gpio 模式可以配置成输入、输出、模拟、复用。

1 #define GPIO_INPUT      (0 << GPIO_MODE_SHIFT) /* Input Enable */
2 #define GPIO_OUTPUT     (1 << GPIO_MODE_SHIFT) /* Output Enable */
3 #define GPIO_ANALOG     (2 << GPIO_MODE_SHIFT) /* Analog Enable */
4 #define GPIO_ALTERNATE  (3 << GPIO_MODE_SHIFT) /* Alternate Enable */

gpio function

参考 bflb_gpio.h 文件,不详细列出。

gpio pupd

gpio 上下拉可以选择上拉、下拉、浮空。

1 #define GPIO_FLOAT      (0 << GPIO_PUPD_SHIFT) /* No pull-up, pull-down */
2 #define GPIO_PULLUP     (1 << GPIO_PUPD_SHIFT) /* Pull-up */
3 #define GPIO_PULLDOWN   (2 << GPIO_PUPD_SHIFT) /* Pull-down */

gpio smt

gpio 滤波开关。

1 #define GPIO_SMT_DIS   (0 << GPIO_SMT_SHIFT)
2 #define GPIO_SMT_EN    (1 << GPIO_SMT_SHIFT)

gpio drive

gpio 输出能力选择。

1 #define GPIO_DRV_0     (0 << GPIO_DRV_SHIFT)
2 #define GPIO_DRV_1     (1 << GPIO_DRV_SHIFT)
3 #define GPIO_DRV_2     (2 << GPIO_DRV_SHIFT)
4 #define GPIO_DRV_3     (3 << GPIO_DRV_SHIFT)

gpio int trig mode

gpio 外部中断触发模式。

 1 #define GPIO_INT_TRIG_MODE_SYNC_FALLING_EDGE 0
 2 #define GPIO_INT_TRIG_MODE_SYNC_RISING_EDGE  1
 3 #define GPIO_INT_TRIG_MODE_SYNC_LOW_LEVEL    2
 4 #define GPIO_INT_TRIG_MODE_SYNC_HIGH_LEVEL   3
 5 #if defined(BL702)
 6 #define GPIO_INT_TRIG_MODE_ASYNC_FALLING_EDGE 4
 7 #define GPIO_INT_TRIG_MODE_ASYNC_RISING_EDGE  5
 8 #define GPIO_INT_TRIG_MODE_ASYNC_LOW_LEVEL    6
 9 #define GPIO_INT_TRIG_MODE_ASYNC_HIGH_LEVEL   7
10 #else
11 #define GPIO_INT_TRIG_MODE_SYNC_FALLING_RISING_EDGE 4
12 #define GPIO_INT_TRIG_MODE_ASYNC_FALLING_EDGE       8
13 #define GPIO_INT_TRIG_MODE_ASYNC_RISING_EDGE        9
14 #define GPIO_INT_TRIG_MODE_ASYNC_LOW_LEVEL          10
15 #define GPIO_INT_TRIG_MODE_ASYNC_HIGH_LEVEL         11
16 #endif

警告

602、702 不支持双边沿

gpio uart function

博流系列芯片,每个 gpio 可以选择到 UART 的任意一个功能。

 1 #define GPIO_UART_FUNC_UART0_RTS 0
 2 #define GPIO_UART_FUNC_UART0_CTS 1
 3 #define GPIO_UART_FUNC_UART0_TX  2
 4 #define GPIO_UART_FUNC_UART0_RX  3
 5 #define GPIO_UART_FUNC_UART1_RTS 4
 6 #define GPIO_UART_FUNC_UART1_CTS 5
 7 #define GPIO_UART_FUNC_UART1_TX  6
 8 #define GPIO_UART_FUNC_UART1_RX  7
 9 #if defined(BL808) || defined(BL606P)
10 #define GPIO_UART_FUNC_UART2_RTS 8
11 #define GPIO_UART_FUNC_UART2_CTS 9
12 #define GPIO_UART_FUNC_UART2_TX  10
13 #define GPIO_UART_FUNC_UART2_RX  11
14 #endif

Structs

Functions

bflb_gpio_init

说明: 初始化 gpio。如果配置为 UART 功能,请使用 bflb_gpio_uart_init

1 void bflb_gpio_init(struct bflb_device_s *dev, uint8_t pin, uint32_t cfgset);

parameter

description

dev

设备句柄

pin

gpio pin

cfgset

gpio 配置项:gpio mode、gpio function、gpio pupd、gpio smt、gpio drive,多个配置需要使用 | 连接

bflb_gpio_deinit

说明: 反初始化 gpio,默认为输入浮空状态

1 void bflb_gpio_deinit(struct bflb_device_s *dev, uint8_t pin);

parameter

description

dev

设备句柄

pin

gpio pin

bflb_gpio_set

说明: gpio 输出高电平

1 void bflb_gpio_set(struct bflb_device_s *dev, uint8_t pin);

parameter

description

dev

设备句柄

pin

gpio pin

bflb_gpio_reset

说明: gpio 输出低电平

1 void bflb_gpio_reset(struct bflb_device_s *dev, uint8_t pin);

parameter

description

dev

设备句柄

pin

gpio pin

bflb_gpio_read

说明: 读取 gpio 电平

1 bool bflb_gpio_read(struct bflb_device_s *dev, uint8_t pin);

parameter

description

dev

设备句柄

pin

gpio pin

return

true 为 高电平,false 为低电平

bflb_gpio_int_init

说明: gpio 外部中断初始化

1 void bflb_gpio_int_init(struct bflb_device_s *dev, uint8_t pin, uint8_t trig_mode);

parameter

description

dev

设备句柄

pin

gpio pin

trig_mode

中断触发模式

bflb_gpio_int_mask

说明: gpio 外部中断屏蔽开关

1 void bflb_gpio_int_mask(struct bflb_device_s *dev, uint8_t pin, bool mask);

parameter

description

dev

设备句柄

pin

gpio pin

mask

是否屏蔽中断

bflb_gpio_get_intstatus

说明: 获取 gpio 外部中断是否触发的标志

1 bool bflb_gpio_get_intstatus(struct bflb_device_s *dev, uint8_t pin);

parameter

description

dev

设备句柄

pin

gpio pin

return

为 true 表示触发

bflb_gpio_int_clear

说明: 清除 gpio 中断标志

1 void bflb_gpio_int_clear(struct bflb_device_s *dev, uint8_t pin);

parameter

description

dev

设备句柄

pin

gpio pin

bflb_gpio_uart_init

说明: gpio 配置成 uart 的某一个功能。

1 void bflb_gpio_uart_init(struct bflb_device_s *dev, uint8_t pin, uint8_t uart_func);

parameter

description

dev

设备句柄

pin

gpio pin

uart_func

uart 具体某一个功能