Air724开发板GPIO试验

main.lua
--必须在这个位置定义PROJECT和VERSION变量--PROJECT:ascii string类型 , 可以随便定义 , 只要不使用,就行--VERSION:ascii string类型 , 如果使用Luat物联云平台固件升级的功能 , 必须按照"X.X.X"定义 , X表示1位数字;否则可随便定义PROJECT = "ARMXU_GPIO"VERSION = "0.0.0"require "testGpio"--启动系统框架sys.init(0, 0)sys.run()
.lua
--- 模块功能:GPIO功能测试.-- @author openLuat-- @module gpio.testGpioSingle-- @license MIT-- @copyright openLuat-- @release 2018.03.27module(...,package.seeall)require"pins"--[[有些GPIO需要打开对应的ldo电压域才能正常工作 , 电压域和对应的GPIO关系如下pmd.ldoset(x,pmd.LDO_VSIM1) -- GPIO 29、30、31pmd.ldoset(x,pmd.LDO_VLCD) -- GPIO 0、1、2、3、4--注意:--Air724 A11以及之前的开发板丝印有误:--丝印中的IO_0、IO_1、IO_2、IO_3、IO_4并不对应GPIO0、1、2、3、4--丝印中的LCD_DIO、LCD_RS、LCD_CLK、LCD_CS对应GPIO0、1、2、3;模块的LCD_SEL引脚对应GPIO4pmd.ldoset(x,pmd.LDO_VMMC) -- GPIO 24、25、26、27、28x=0时:关闭LDOx=1时:LDO输出1.716Vx=2时:LDO输出1.828Vx=3时:LDO输出1.939Vx=4时:LDO输出2.051Vx=5时:LDO输出2.162Vx=6时:LDO输出2.271Vx=7时:LDO输出2.375Vx=8时:LDO输出2.493Vx=9时:LDO输出2.607Vx=10时:LDO输出2.719Vx=11时:LDO输出2.831Vx=12时:LDO输出2.942Vx=13时:LDO输出3.054Vx=14时:LDO输出3.165Vx=15时:LDO输出3.177V]]local level = 0--GPIO18配置为输出 , 默认输出低电平 , 可通过setGpio18Fnc(0或者1)设置输出电平local setGpio14Fnc = pins.setup(pio.P0_14,0)sys.timerLoopStart(function()level = level==0 and 1 or 0setGpio14Fnc(level)-- log.info("testGpioSingle.setGpio18Fnc",level)end,10)
理解语句"level=level=="是lua的三目运算 Lua 中的三目运算
Lua 原生的语义并没有实现三目运算 , 一般是通过逻辑运算符 and 和 or 来模拟三目运算符的 。
Lua 中 and 和 or 都使用"短路求值( )" , 也就是说 , 它们只会在需要时才去评估第二个操作数 。(《Lua程序设计》)
local a, b, ret;ret = a > b and a or b
穷举所有可能性:
a > b 时:
a > b and a –> true a or b –> a
【Air724开发板GPIO试验】a