• 欢迎大家分享资料!前往留言板评论即可!

Luat训练营-第6天

合宙 模组资料网 2年前 (2021-05-15) 311次浏览 0个评论 扫描二维码
文章目录[隐藏]

@TOC

第5天内容复习

第5日内容

第6天内容

内容概要

log,gpio,adc相关

Air724固件介绍

固件文档链接
常见版本后缀说明:
FLOAT 浮点运算
TTS 文本转语音
LVGL 图形库
VOLTE 高清语音通话
BT 蓝牙

常用的固件版本:
Luat_RDA8910 最基础的固件版本
Luat_RDA8910_FLOAT 基础+float(浮点)运算

固件版本的不同:
Luat_RDA8910_TTS 带文本转语音
Luat_RDA8910_TTS_FLOAT 文本转语音+浮点运算
Luat_RDA8910_TTS_NOLVGL 支持文本转语音 不支持图形库
Luat_RDA8910_TTS_NOVOLTE_FLOAT 文本转语音 浮点 无高清语音通话
Luat_RDA8910_TTS_NOLVGL_FLOAT 文本转语音 无图形库 浮点
Luat_RDA8910_BT_FLOAT 带蓝牙 + 浮点运算
#以上仅对明明进行介绍,具体功能详见表单!!

固件内容说明

├─demo 各种功能示例
├─doc html文件
├─lib 基础库
└release note.txt

每一个示例中包含mian.lua功能.lua
main.lua的结构说明:
初始定义:

--必须在这个位置定义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
--log.openTrace(true,1,115200) 串口输出日志

信号和基站查询

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

网络指示灯

--加载网络指示灯和LTE指示灯功能模块
--根据自己的项目需求和硬件配置决定:1、是否加载此功能模块;2、配置指示灯引脚
--合宙官方出售的Air720开发板上的网络指示灯引脚为pio.P2_0,LTE指示灯引脚为pio.P2_1
require "netLed"
netLed.setup(true,pio.P2_0,pio.P2_1)

日志管理

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

加载模块和启动框架

--加载GPIO功能测试模块
require "testGpioSingle"
--启动系统框架
sys.init(0, 0)
sys.run()
--之后不要写代码

固件下载

板子正常:

正常下载

板子变砖:

异常下载

①关机状态下按住Boot按键
②开机,电脑响一声,松开Boot
③勾选USB BOOT下载,点击固件下载

脚本下载

1.进入项目管理测试界面
项目管理

2.新建一个项目
3.选择文件,增加脚本
4.添加默认lib(使用旧lib就将lib作为脚本添加)
管理

log库

log库

log.debug(tag, …)

输出debug级别的日志 调试

log.info(tag, …)

输出info级别的日志 普通

log.warn(tag, …)

输出warn级别的日志 警告

log.error(tag, …)

输出error级别的日志 错误

log.openTrace(v, uartid, baudrate)

开启或者关闭print的打印输出功能

pins库

pins库

pins.setup(pin, val, pull)

配置GPIO模式,包括输入输出IO和上升下降沿中断IO

pins.close(pin)

关闭GPIO模式

GPIO输出

local level = 0 
--GPIO4配置为输出,默认输出低电平,可通过setGpio79Fnc(0或者1)设置输出电平
local setGpio4Fnc = pins.setup(4,0)
sys.timerLoopStart(function()
    level = level==0 and 1 or 0 --实现电平翻转
    setGpio4Fnc(level)
    log.info("testGpioSingle.setGpio4Fnc",level)
end,1000)

GPIO中断输入

--GPIO54配置为中断,可通过getGpio54Fnc()获取输入电平,产生中断时,自动执行gpio54IntFnc函数
getGpio54Fnc = pins.setup(pio.P1_22,gpio54IntFnc) ]]

function gpio54IntFnc(msg)
    log.info("testGpioSingle.gpio54IntFnc",msg,getGpio54Fnc())
    --上升沿中断
    if msg==cpu.INT_GPIO_POSEDGE then
    --下降沿中断
    else
    end
end

GPIO代码实验

module(...,package.seeall)

require "pins"

function gpio_test()
    local setgpio12 = pins.setup(pio.P0_12,0) -- GPIO12输出
    setgpio12(0) -- 输出0
    log.info("GPIO",0)
    sys.wait(1000)
    setgpio12(1) -- 输出1
    log.info("GPIO",1)
    sys.wait(1000)
end

local getgpio10 = pins.setup(pio.P0_10)

-- 协程
sys.taskInit(function ()
    while true do 
        gpio_test()
        sys.wait(1000)
        getgpio10()
    end
end,...)

ADC库

ADC库

result=adc.open(id,scale)

功能:打开ADC通道

adcval, voltval=adc.read(id)

功能:读取ADC。

result=adc.close(Id)

功能:关闭ADC通道

ADC测试函数

--- ADC读取测试
-- @return 无
-- @usage read()
local function read()
    --ADC1接口用来读取电压
    local ADC_ID = 1
    -- 读取adc
    -- adcval为number类型,表示adc的原始值,无效值为0xFFFF
    -- voltval为number类型,表示转换后的电压值,单位为毫伏,无效值为0xFFFF;adc.read接口返回的voltval放大了3倍,所以需要除以3还原成原始电压
    -- adc1读取量程为0-1400mV
    local adcval,voltval = adc.read(ADC_ID)
    log.info("testAdc1.read",adcval,(voltval-(voltval%3))/3,voltval)
end

相关知识补充

local function read()

end
-- 开启对应的adc通道
adc.open(0)  -- 顶格写的为实际运行的部分



转载请注明原文链接:Luat训练营-第6天
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址