这里我们使用云编译来生成芯片的相关固件
具体使用参考官方文档https://wiki.luatos.com/develop/compile/Cloud_compilation.html
生成后,我们下载下来
测试串口发送和串口接收,具体参考芯片来选择串口进行使用
我们这里以串口2使用作介绍
-- LuaTools需要PROJECT和VERSION这两个信息
PROJECT = "Test"
VERSION = "1.0.0"
-- 打印版本信息
log.info("main", PROJECT, VERSION)
-- 一定要添加sys.lua !!!!
sys = require("sys")
USE_ZBUFF = true
uart.setup(2, 115200, 8, 1, uart.None)--初始化UART1,波特率为115200,8位数据位,1位停止位,无校验
--注册串口事件回调
uart.on(2, "receive", function(id, len)
local data = uart.read(id, len)
log.info("uart", id, len, data)
end)
sys.timerLoopStart(function()
uart.write(2, "Hi,I am Air601\n")
log.info("main", PROJECT, VERSION)
end, 2000)
--第一个任务
sys.taskInit(function()
while true do
-- log.info("task1","wow")
sys.wait(1000) --延时1秒,这段时间里可以运行其他代码
end
end)
--第二个任务
sys.taskInit(function()
while true do
-- log.info("task2","wow")
sys.wait(5000) --延时0.5秒,这段时间里可以运行其他代码
end
end)
-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!
烧录上我们生成的固件还有编写的脚本文件即可
具体UART库函数参考地址https://wiki.luatos.com/api/uart.html#uart-on-id-event-func
UART示例代码
-- LuaTools需要PROJECT和VERSION这两个信息
PROJECT = "uart_irq"
VERSION = "1.0.0"
log.info("main", PROJECT, VERSION)
-- 引入必要的库文件(lua编写), 内部库不需要require
sys = require("sys")
if wdt then
--添加硬狗防止程序卡死,在支持的设备上启用这个功能
wdt.init(9000)--初始化watchdog设置为9s
sys.timerLoopStart(wdt.feed, 3000)--3s喂一次狗
end
log.info("main", "uart demo")
local uartid = 2 -- 根据实际设备选取不同的uartid
--初始化
local result = uart.setup(
uartid,--串口id
115200,--波特率
8,--数据位
1--停止位
)
--循环发数据
sys.timerLoopStart(uart.write,1000, uartid, "test")
-- 收取数据会触发回调, 这里的"receive" 是固定值
uart.on(uartid, "receive", function(id, len)
local s = ""
repeat
-- s = uart.read(id, 1024)
s = uart.read(id, len)
if #s > 0 then -- #s 是取字符串的长度
-- 如果传输二进制/十六进制数据, 部分字符不可见, 不代表没收到
-- 关于收发hex值,请查阅 https://doc.openluat.com/article/583
log.info("uart", "receive", id, #s, s)
-- log.info("uart", "receive", id, #s, s:toHex())
end
if #s == len then
break
end
until s == ""
end)
-- 并非所有设备都支持sent事件
uart.on(uartid, "sent", function(id)
log.info("uart", "sent", id)
end)
-- sys.taskInit(function()
-- while 1 do
-- sys.wait(500)
-- end
-- end)
-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!