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秒