luat_soc_sdk_2024 V1.0
luat_gpio.h
浏览该文件的文档.
1
2#ifndef LUAT_GPIO_H
3#define LUAT_GPIO_H
4
5
6#include "luat_base.h"
7#include "luat_gpio_legacy.h"
8
9// 若bsp没有定义最大PIN编号, 那么默认给个128吧
10#ifndef LUAT_GPIO_PIN_MAX
11#define LUAT_GPIO_PIN_MAX (128)
12#endif
13
19#define LUAT_GPIO_LOW (Luat_GPIO_LOW)
20#define LUAT_GPIO_HIGH (Luat_GPIO_HIGH)
21
22#define LUAT_GPIO_OUTPUT (Luat_GPIO_OUTPUT)
23#define LUAT_GPIO_INPUT (Luat_GPIO_INPUT)
24#define LUAT_GPIO_IRQ (Luat_GPIO_IRQ)
25
26#define LUAT_GPIO_DEFAULT (Luat_GPIO_DEFAULT)
27#define LUAT_GPIO_PULLUP (Luat_GPIO_PULLUP)
28#define LUAT_GPIO_PULLDOWN (Luat_GPIO_PULLDOWN)
29
30#define LUAT_GPIO_RISING_IRQ (Luat_GPIO_RISING)
31#define LUAT_GPIO_FALLING_IRQ (Luat_GPIO_FALLING)
32#define LUAT_GPIO_BOTH_IRQ (Luat_GPIO_BOTH)
33#define LUAT_GPIO_HIGH_IRQ (Luat_GPIO_HIGH_IRQ)
34#define LUAT_GPIO_LOW_IRQ (Luat_GPIO_LOW_IRQ)
35#define LUAT_GPIO_NO_IRQ (0xff)
36
37#define LUAT_GPIO_MAX_ID (Luat_GPIO_MAX_ID)
38
39//无效的GPIO,用作某些函数引脚不指定时使用
40#define LUAT_GPIO_NONE (0xff)
41
45typedef struct luat_gpio_cfg
46{
47 int pin;
48 uint8_t mode;
49 uint8_t pull;
50 uint8_t irq_type;
51 uint8_t output_level;
52 luat_gpio_irq_cb irq_cb;
53 void* irq_args;
54 uint8_t alt_fun;
56
57
81int luat_gpio_set(int pin, int level);
82
88int luat_gpio_get(int pin);
93void luat_gpio_close(int pin);
101int luat_gpio_set_irq_cb(int pin, luat_gpio_irq_cb cb, void* args);
102
113void luat_gpio_pulse(int pin, uint8_t *level, uint16_t len, uint16_t delay_ns);
121int luat_gpio_ctrl(int pin, LUAT_GPIO_CTRL_CMD_E cmd, int param);
122void luat_gpio_iomux(int pin, int new_pad, uint8_t alt);
135int luat_gpio_driver_ws2812b(int pin, uint8_t *data, uint32_t len, uint32_t frame_cnt, uint8_t bit0h, uint8_t bit0l, uint8_t bit1h, uint8_t bit1l);
138void luat_gpio_mode(int pin, int mode, int pull, int initOutput);
139#endif
int luat_gpio_set_irq_cb(int pin, luat_gpio_irq_cb cb, void *args)
设置GPIO中断回调函数
struct luat_gpio_cfg luat_gpio_cfg_t
GPIO控制参数
int luat_gpio_get(int pin)
读取GPIO输入电平
int luat_gpio_driver_ws2812b(int pin, uint8_t *data, uint32_t len, uint32_t frame_cnt, uint8_t bit0h, uint8_t bit0l, uint8_t bit1h, uint8_t bit1l)
gpio方式输出bit0和bit1给WS2812B,不输出reset,由于严格的时序要求,会关闭中断来保证时序,因此驱动大量LED灯时会对其他驱动,甚至整个系统有影响。建议用多个GPIO分组驱动大量LE...
void luat_gpio_iomux(int pin, int new_pad, uint8_t alt)
int luat_gpio_set(int pin, int level)
GPIO输出电平
void luat_gpio_pulse(int pin, uint8_t *level, uint16_t len, uint16_t delay_ns)
GPIO模拟单线输出模式
void luat_gpio_close(int pin)
关闭GPIO
void luat_gpio_set_default_cfg(luat_gpio_cfg_t *gpio)
GPIO设置默认参数
int luat_gpio_ctrl(int pin, LUAT_GPIO_CTRL_CMD_E cmd, int param)
GPIO上下拉\中断单独设置函数
int luat_gpio_open(luat_gpio_cfg_t *gpio)
打开GPIO
LUAT_GPIO_CTRL_CMD_E
GPIO上下拉\中断设置参数
@ LUAT_GPIO_CMD_SET_PULL_MODE
@ LUAT_GPIO_CMD_SET_IRQ_MODE
void luat_gpio_mode(int pin, int mode, int pull, int initOutput)
GPIO控制参数
luat_gpio_irq_cb irq_cb