GPIO控制

# 简介 GPIO(General-Purpose Input/Output) 指通用输入输出口。在软件运行期间能够动态配置和控制的通用引脚,实现某时刻电平状态的输出与输入,即可以通过它们输出高低电平或者通过它们读入引脚的状态-是高电平或是低电平。除了通用输入输出功能外,还可能有上拉、下拉、中断或其它复用功能。 --- 合宙Cat.1模块具有多种不同的GPIO接口,部分GPIO口同时可复用为其他功能,并且模块的GPIO管脚输入输出电压能力按照不同的电压域区分,特珠管脚的使用需要打开对应的电压域方能使用。 -- --- # GPIO接口控制 GPIO的库由底层core实现,相关API接口如下: |API接口| 描述| | --- | --- | | pins.setup()| GPIO接口配置,配置使用管脚,模式 | > 详细的API介绍见[pins API](https://doc.openluat.com/wiki/21?wiki_page_id=2286 "pins API")章节 # GPIO使用示例 GPIO 的具体使用方式可以参考如下示例代码,示例代码的主要步骤如下: 1. 配置操作的GPIO接口管脚及工作模式。 2. 在代码运行中操作GPIO口工作状态。 ```lua module(...,package.seeall) require"pins" --[[ 有些GPIO需要打开对应的ldo电压域才能正常工作,电压域和对应的GPIO关系如下 pmd.ldoset(x,pmd.LDO_VSIM1) -- GPIO 29、30、31 pmd.ldoset(x,pmd.LDO_VLCD) -- GPIO 0、1、2、3、4 pmd.ldoset(x,pmd.LDO_VMMC) -- GPIO 24、25、26、27、28 x=0时:关闭LDO x=1时:LDO输出1.716V x=2时:LDO输出1.828V x=3时:LDO输出1.939V x=4时:LDO输出2.051V x=5时:LDO输出2.162V x=6时:LDO输出2.271V x=7时:LDO输出2.375V x=8时:LDO输出2.493V x=9时:LDO输出2.607V x=10时:LDO输出2.719V x=11时:LDO输出2.831V x=12时:LDO输出2.942V x=13时:LDO输出3.054V x=14时:LDO输出3.165V x=15时:LDO输出3.177V ]] local level = 0 --GPIO18配置为输出,默认输出低电平,可通过setGpio18Fnc(0或者1)设置输出电平 local setGpio18Fnc = pins.setup(pio.P0_18,0) sys.timerLoopStart(function() level = level==0 and 1 or 0 setGpio18Fnc(level) log.info("testGpioSingle.setGpio18Fnc",level) end,1000) --GPIO19配置为输入,可通过getGpio19Fnc()获取输入电平 local getGpio19Fnc = pins.setup(pio.P0_19) sys.timerLoopStart(function() log.info("testGpioSingle.getGpio19Fnc",getGpio19Fnc()) end,1000) --pio.pin.setpull(pio.PULLUP,pio.P0_19) --配置为上拉 --pio.pin.setpull(pio.PULLDOWN,pio.P0_19) --配置为下拉 --pio.pin.setpull(pio.NOPULL,pio.P0_19) --不配置上下拉 function gpio13IntFnc(msg) log.info("testGpioSingle.gpio13IntFnc",msg,getGpio13Fnc()) --上升沿中断 if msg==cpu.INT_GPIO_POSEDGE then --下降沿中断 else end end --GPIO13配置为中断,可通过getGpio13Fnc()获取输入电平,产生中断时,自动执行gpio13IntFnc函数 getGpio13Fnc = pins.setup(pio.P0_13,gpio13IntFnc) ``` # 硬件设计 见硬件设计指南 [GPIO接口 章节](https://hmi.wiki.luatos.com/doc/65042949/e6zPC3k9/AJYjwZih)