Przeglądaj źródła

add:gpio改变上下拉和中断模式的操作

alienwalker 3 lat temu
rodzic
commit
0a976c0977
1 zmienionych plików z 12 dodań i 3 usunięć
  1. 12 3
      luat/include/luat_gpio.h

+ 12 - 3
luat/include/luat_gpio.h

@@ -19,11 +19,12 @@
 #define LUAT_GPIO_PULLUP         (Luat_GPIO_PULLUP)
 #define LUAT_GPIO_PULLDOWN       (Luat_GPIO_PULLDOWN)
 
-#define LUAT_GPIO_RISING             (Luat_GPIO_RISING)
-#define LUAT_GPIO_FALLING            (Luat_GPIO_FALLING)
-#define LUAT_GPIO_BOTH               (Luat_GPIO_BOTH)
+#define LUAT_GPIO_RISING_IRQ             (Luat_GPIO_RISING)
+#define LUAT_GPIO_FALLING_IRQ            (Luat_GPIO_FALLING)
+#define LUAT_GPIO_BOTH_IRQ               (Luat_GPIO_BOTH)
 #define LUAT_GPIO_HIGH_IRQ			(Luat_GPIO_HIGH_IRQ)	//高电平中断
 #define LUAT_GPIO_LOW_IRQ			(Luat_GPIO_LOW_IRQ)	//低电平中断
+#define LUAT_GPIO_NO_IRQ			(0xff)
 
 #define LUAT_GPIO_MAX_ID             (Luat_GPIO_MAX_ID)
 
@@ -51,6 +52,12 @@ typedef struct luat_gpio_cfg
  * @{
  */
 
+typedef enum
+{
+	LUAT_GPIO_CMD_SET_PULL_MODE,
+	LUAT_GPIO_CMD_SET_IRQ_MODE,
+}LUAT_GPIO_CTRL_CMD_E;
+
 void luat_gpio_set_default_cfg(luat_gpio_cfg_t* gpio);
 int luat_gpio_open(luat_gpio_cfg_t* gpio);
 int luat_gpio_set(int pin, int level);
@@ -60,6 +67,8 @@ void luat_gpio_close(int pin);
 int luat_gpio_set_irq_cb(int pin, luat_gpio_irq_cb cb, void* args);
 // 在同一个GPIO输出一组脉冲, 注意, len的单位是bit, 高位在前.
 void luat_gpio_pulse(int pin, uint8_t *level, uint16_t len, uint16_t delay_ns);
+
+int luat_gpio_ctrl(int pin, LUAT_GPIO_CTRL_CMD_E cmd, int param);
 /** @}*/
 /** @}*/
 #endif