Browse Source

update: gpio,更新API描述

Wendal Chen 6 months ago
parent
commit
8b9819dcd0
1 changed files with 17 additions and 9 deletions
  1. 17 9
      luat/modules/luat_lib_gpio.c

+ 17 - 9
luat/modules/luat_lib_gpio.c

@@ -396,8 +396,8 @@ int luat_caplevel_irq_cb(int pin, void* args) {
 @function func 完成捕获后的回调函数,仅一个参数,参数为捕获到的时间长度number型数值,单位us
 @return any 返回获取电平的闭包
 @usage
--- 捕获pin.PA07为高电平的持续时间
-gpio.caplevel(pin.PA07,1,function(us_int) print(us_float) end)
+-- 捕获GPIO7为高电平的持续时间
+gpio.caplevel(7,1,function(us_int) print(us_float) end)
 */
 static int l_gpio_caplevel(lua_State *L){
     luat_gpio_t conf = {0};
@@ -439,6 +439,8 @@ static int l_gpio_caplevel(lua_State *L){
 @int value 电平, 可以是 高电平gpio.HIGH, 低电平gpio.LOW, 或者直接写数值1或0
 @return nil 无返回值
 @usage
+-- 注意!!! 仅输出状态下,这个函数才有效
+-- 一定要先gpio.setup, 起码执行过一次gpio.setup, 才能使用本函数. 但不需要每次都gpio.setup
 -- 设置gpio17为低电平
 gpio.set(17, 0)
 */
@@ -468,8 +470,11 @@ static int l_gpio_set(lua_State *L) {
 @int pin GPIO编号,必须是数值
 @return value 电平, 高电平gpio.HIGH, 低电平gpio.LOW, 对应数值1和0
 @usage
+-- 注意!!! 仅输入模式或者中断模式状态下,这个函数才有效
+-- 一定要先gpio.setup, 起码执行过一次gpio.setup, 才能使用本函数. 但不需要每次都gpio.setup
 -- 获取gpio17的当前电平
-gpio.get(17)
+local value = gpio.get(17)
+log.info("gpio", "GPIO17:", value)
 */
 static int l_gpio_get(lua_State *L) {
     int upindex = lua_upvalueindex(1);
@@ -496,7 +501,7 @@ static int l_gpio_get(lua_State *L) {
 }
 
 /*
-关闭管脚功能(高阻输入态),关掉中断
+关闭管脚功能(恢复高阻输入态),关掉中断
 @api gpio.close(pin)
 @int pin GPIO编号,必须是数值
 @return nil 无返回值,总是执行成功
@@ -553,6 +558,7 @@ static int l_gpio_set_default_pull(lua_State *L) {
 @usage
 -- 本API于 2022.05.17 添加
 -- 假设GPIO16上有LED, 每500ms切换一次开关
+-- 注意!!! 仅输出状态下,这个函数才有效
 gpio.setup(16, 0)
 sys.timerLoopStart(function()
     gpio.toggle(16)
@@ -579,7 +585,7 @@ static int l_gpio_toggle(lua_State *L) {
 }
 
 /*
-在同一个GPIO输出一组脉冲, 注意, len的单位是bit, 高位在前,高低电平时间均是由delay决定。本API是阻塞操作,不可以一次性输出太多的脉冲!!!
+在同一个GPIO输出一组脉冲
 @api gpio.pulse(pin,level,len,delay)
 @int gpio号
 @int/string 数值或者字符串.
@@ -587,8 +593,10 @@ static int l_gpio_toggle(lua_State *L) {
 @int delay 高低电平延迟时间, 用的软件while来delay, 这里的delay值是while循环次数, 具体delay时间必须实际调试才知道
 @return nil 无返回值
 @usage
--- 通过PB06脚输出输出8个电平变化,while循环次数是0
-gpio.pulse(pin.PB06,0xA9, 8, 0)
+-- 注意, len的单位是bit, 高位在前,高低电平时间均是由delay决定。
+-- 本API是阻塞操作,不可以一次性输出太多的脉冲!!! 否则会死机!!!
+-- 通过GPIO1脚输出输出8个电平变化,while循环次数是0
+gpio.pulse(1,0xA9, 8, 0)
 */
 static int l_gpio_pulse(lua_State *L) {
     int pin,delay = 0;
@@ -637,7 +645,7 @@ static int l_gpio_pulse(lua_State *L) {
 -- 1 触发中断后,延迟N个毫秒,期间没有新中断且电平没有变化,上报一次
 
 -- 开启防抖, 模式0-冷却, 中断后马上上报, 但100ms内只上报一次
-gpio.debounce(7, 100) -- 若芯片支持pin库, 可用pin.PA7代替数字7
+gpio.debounce(7, 100) -- 对应GPIO7
 -- 开启防抖, 模式1-延时, 中断后等待100ms,期间若保持该电平了,时间到之后上报一次
 -- 对应的,如果输入的是一个 50hz的方波,那么不会触发任何上报
 gpio.debounce(7, 100, 1)
@@ -677,7 +685,7 @@ static int l_gpio_debounce(lua_State *L) {
 }
 
 /*
-获取gpio中断数量,并清空累计值,类似air724的脉冲计数
+获取gpio中断数量,并清空累计值
 @api gpio.count(pin)
 @int gpio号, 0~127, 与硬件相关
 @return int 返回从上次获取中断数量后到当前的中断计数