air105#
本章介绍LuatOS的mcu库使用方式
简介#
mcu库封装了一些对应mcu的特殊操作
硬件准备#
Air105开发板
软件部分#
接口文档可参考:mcu库
查询主频#
air105不支持设置主频,只支持查询主频
代码如下
PROJECT = "mcu"
VERSION = "1.0.0"
sys = require("sys")
function test()
log.info(PROJECT .. ".getClk", mcu.getClk())
end
sys.taskInit(test)
sys.run()
日志如下
I/user.mcu.getClk 192
获取设备唯一id#
代码如下
PROJECT = "mcu"
VERSION = "1.0.0"
sys = require("sys")
function test()
log.info(PROJECT .. ".unique_id", mcu.unique_id():toHex())
end
sys.taskInit(test)
sys.run()
日志如下
I/user.mcu.unique_id 31393033535138385400000000617603 32
获取启动后的tick数和每秒的tick数量#
代码如下
PROJECT = "mcu"
VERSION = "1.0.0"
sys = require("sys")
local firstTick, secondTick = "0", "0"
function test()
log.info(PROJECT .. ".ticks1", mcu.ticks())
log.info(PROJECT .. ".hz", mcu.hz())
sys.wait(5000)
log.info(PROJECT .. ".ticks2", mcu.ticks())
end
sys.taskInit(test)
sys.run()
日志如下
I/user.mcu.ticks1 15
-- 1S 1000个tick
I/user.mcu.hz 1000
-- 延时5S后再查询tick比第一次查询多了5000个tick
I/user.mcu.ticks2 5016
转换10进制数为16进制字符串输出#
代码如下
PROJECT = "mcu"
VERSION = "1.0.0"
sys = require("sys")
local firstTick, secondTick = "0", "0"
function test()
-- 最大转换4个字节的数字
log.info(PROJECT .. ".x32", mcu.x32(305419896)) -- 0x12345678
end
sys.taskInit(test)
sys.run()
日志如下
I/user.mcu.x32 0x12345678
获取启动后的高精度tick,并计算两个tick的差值#
代码如下
PROJECT = "mcu"
VERSION = "1.0.0"
sys = require("sys")
function test()
-- 第一次获取tick
local firstTck, tickPerUS = mcu.tick64()
-- 等待5s
sys.wait(5000)
-- 第二次获取tick
local secondTick, tickPerUS = mcu.tick64()
-- 打印每1us的tick数
log.info(PROJECT .. ".tickPerUS", tickPerUS)
local dtick64Res, dtick64Data = mcu.dtick64(secondTick, firstTck)
log.info(PROJECT, "两次获取的tick相差" .. dtick64Data / 48 / 1000000 .. "秒")
end
sys.taskInit(test)
sys.run()
日志如下
-- 48个tick的时长为1us
I/user.mcu.tickPerUS 48
I/user.mcu 两次获取的tick相差5.000287秒