前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GPRS(Air202) Lua开发: GPIO输出高低电平

GPRS(Air202) Lua开发: GPIO输出高低电平

作者头像
杨奉武
发布2020-05-25 16:40:51
8490
发布2020-05-25 16:40:51
举报
文章被收录于专栏:知识分享知识分享

开发板原理图

新建一个GpioOut.lua文件

控制GPIO2输出高电平

代码语言:javascript
复制
module(...,package.seeall)  --固定写法,具体百度lua文件加载(初学者不需要考虑,直接写上这句话即可),这些只是规定的语法而已

require"pins" --加载官方提供的pins文件


--调用pins文件里面的函数控制GPIO2输出高电平
pins.setup(pio.P0_2,1)

提醒: pins.setup(pio.P0_2,1)

函数是调用的 pins文件里面的  setup函数

咱们具体看一下pins里面的函数

1.第一个参数解释:

如果设置GPIO0 - GPIO31管脚,则第一个参数填写 pio.P0_0 - pio.P0_31

如果要设置GPIO32以上的管脚,则变了下

假设设置GPIO32   则填写  pio.P1_0

假设设置GPIO33   则填写  pio.P1_1

.

.

.

依次类推

咱控制的引脚是GPIO2,所以填写的是 pio.P0_2

2.第二个参数解释:

如果设置输出高低电平,则:填写1(输出高电平) ;填写0(输出低电平)

咱们设置输出高电平所以填写的  1

如果填写的是nil (空),则认为是配置引脚为输入

具体是上拉输入/下拉输入/高阻态,由第三个参数决定

如果填写的是一个函数,则认为是配置为中断

具体参考后面的教程

3.第三个参数解释:

第三个参数是设置引脚是上拉输入/下拉输入/高阻态,

实际上当第二个参数设置为 nil (输入模式)

或者第二个参数设置为 function (函数)

的时候,第三个参数可以设置一下默认的状态

第三个参数可以不填!

具体看后面的教程!

4.返回值

首先要明确,返回的是一个函数

调用函数  XXXX();

假设程序是 Relay1 =  pins.setup(pio.P0_2,1);  (设置GPIO2输出高电平)

后期设置输出高低电平可以这样:

Relay1(0);  --设置GPIO2输出低电平

注:这是官方说的...官方底层就是这样做的,千万别纠结于为啥可以这样

你要是参与了合宙的模块的开发,你自己就这样规定的,你还会问为什么嘛??

底层就是这样做的而已,不必纠结!

如果你纠结,说明你C语言的指针学的不咋地!!!!

C语言返回函数指针,然后调用而已!

如果你真的纠结这个,你就去自己嵌入lua开发吧

https://cloud.tencent.com/developer/article/1172799

知识都是相通的,如果你学习一门新语言感觉费劲,说明你没有一门精通的语言!

新建一个main.lua文件

官方做的默认是加载main.lua 这样文件

所以必须有这个文件

文件内容如下:

代码语言:javascript
复制
--必须在这个位置定义PROJECT和VERSION变量
--PROJECT:ascii string类型,可以随便定义,只要不使用,就行
--VERSION:ascii string类型,如果使用Luat物联云平台固件升级的功能,必须按照"X.X.X"定义,X表示1位数字;否则可随便定义
PROJECT = "GPIO_SINGLE"
VERSION = "2.0.0"

--加载日志功能模块,并且设置日志输出等级
--如果关闭调用log模块接口输出的日志,等级设置为log.LOG_SILENT即可
require "log"
LOG_LEVEL = log.LOGLEVEL_TRACE
--[[
如果使用UART输出日志,打开这行注释的代码"--log.openTrace(true,1,115200)"即可,根据自己的需求修改此接口的参数
如果要彻底关闭脚本中的输出日志(包括调用log模块接口和Lua标准print接口输出的日志),执行log.openTrace(false,第二个参数跟调用openTrace接口打开日志的第二个参数相同),例如:
1、没有调用过sys.opntrace配置日志输出端口或者最后一次是调用log.openTrace(true,nil,921600)配置日志输出端口,此时要关闭输出日志,直接调用log.openTrace(false)即可
2、最后一次是调用log.openTrace(true,1,115200)配置日志输出端口,此时要关闭输出日志,直接调用log.openTrace(false,1)即可
]]
--log.openTrace(true,1,115200)

require "sys"

require "net"
--每1分钟查询一次GSM信号强度
--每1分钟查询一次基站信息
net.startQueryAll(60000, 60000)

--加载控制台调试功能模块(此处代码配置的是uart1,波特率115200)
--此功能模块不是必须的,根据项目需求决定是否加载
--使用时注意:控制台使用的uart不要和其他功能使用的uart冲突
--使用说明参考demo/console下的《console功能使用说明.docx》
--require "console"
--console.setup(1, 115200)
--加载硬件看门狗功能模块
--根据自己的硬件配置决定:1、是否加载此功能模块;2、配置Luat模块复位单片机引脚和互相喂狗引脚
--合宙官方出售的Air201开发板上有硬件看门狗,所以使用官方Air201开发板时,必须加载此功能模块
require "wdt"
wdt.setup(pio.P0_30, pio.P0_31)

--加载网络指示灯功能模块
--合宙官方出售的Air800和Air801开发板上的指示灯引脚为pio.P0_28,其他开发板上的指示灯引脚为pio.P1_1
require "netLed"
netLed.setup(true,pio.P1_1)
--网络指示灯功能模块中,默认配置了各种工作状态下指示灯的闪烁规律,参考netLed.lua中ledBlinkTime配置的默认值
--如果默认值满足不了需求,此处调用netLed.updateBlinkTime去配置闪烁时长

--加载错误日志管理功能模块【强烈建议打开此功能】
--如下2行代码,只是简单的演示如何使用errDump功能,详情参考errDump的api
require "errDump"
errDump.request("udp://ota.airm2m.com:9072")

--加载远程升级功能模块【强烈建议打开此功能】
--如下3行代码,只是简单的演示如何使用update功能,详情参考update的api以及demo/update
--PRODUCT_KEY = "v32xEAKsGTIEQxtqgwCldp5aPlcnPs3K"
--require "update"
--update.request()

--加载GpioOut文件
require "GpioOut"

--启动系统框架
sys.init(0, 0)
sys.run()

这个main.lua你从官方随便一个demo里面拷贝过来就可以,都是一样的!

main.lua可以说是固定的.

由于我需要看门狗,网络指示灯

所以打开了这两个功能

再者程序默认调用这个main.lua

我需要让模块调用我写的 GpioOut.lua

所以

然后就可以了

下载测试

1.首先选择自己写的main.lua 和 GpioOut.lua

2.常理来讲需要添加官方的 lib

其实咱可以直接点击下载

软件会提示添加lib文件,咱用LuaTask版本(官方推荐)

然后就开始下载了

下载完成

提醒:如果大家用的低版本的下载工具,其实没有上面这个提醒

大家需要手动添加lib

现象:下面的继电器吸合

扩展:

代码语言:javascript
复制
--Relay_P02 =  pins.setup(pio.P0_2,1)
--以后控制可以使用 Relay_P02 函数控制GPIO输出高低电平
--控制GPIO2输出低电平:   Relay_P02(0)
--控制GPIO2输出高电平:   Relay_P02(1)


--Relay_P03 =  pins.setup(pio.P0_3,1)
--以后控制可以使用 Relay_P03 函数控制GPIO输出高低电平
--控制GPIO3输出低电平:   Relay_P03(0)
--控制GPIO3输出高电平:   Relay_P03(1)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-05-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开发板原理图
  • 新建一个GpioOut.lua文件
  • 新建一个main.lua文件
  • 下载测试
  • 现象:下面的继电器吸合
  • 扩展:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档