本帖最后由 辛一_e1e 于 2022-6-23 23:38 编辑
首先赞一下合宙的LuatOS wiki,做的真的很详细:
https://wiki.luatos.com/index.html。手上拿到的这款Air105核心板是基于Air105 MCU设计的一款
开发板,开发板尺寸迷你,通过邮票孔设计引出Pin脚,很容易进行拓展连接。
Air105 MCU是一款强大的MCU,内核采用Cortex M4F CPU,运算能力有一定的保证。同时配有640KB的大内存,以及4MB的Flash,可以让开发者不必纠结代码结构,大胆“放飞自我”。接口方面有基本的UART、SPI、IIC等串行接口,还带有USB和摄像头DCMI,可以说是应有尽有。另外ADC、DAC、
timer等模块可以丰富MCU的应用场景,CRC和TRNG模块能够在信息安全中发挥作用。
总体来看 Air105 MCU真是一块宝。虽然采用
ARM的MCU,但是合宙帮我们开发者封装了一层脚本框架LuatOS,基于这个框架可以大大提高开发效率。既然是基于LuatOS,那么就不能使用Keil进行开发。合宙官方推荐的vscode+插件的形式,插件可以在vscode内搜索“LuatOS-SOC推荐拓展包”,有了这个插件可以完成一些LuatOS下代码自动补全的功能。
脚本的烧录是通过串口进行的,需要用到的工具是Luatools。Luatools是一个综合工具,可以完成串口打印debug,也可以完成固件更新,以及脚本上传。
LuatOS的Wiki主页为我们提供不少库和外设的使用方式。其中sys和log基本上是必选的。sys负责嵌入式操作系统任务的创建和调度等任务,加入sys库LuatOS才能够正常运行。
- local sys = require "sys"
而log库可以输出代码信息,方便调试。log可以分为debug、info、warn和error不同等级,可以根据需求屏蔽不同等级的输出,方便了程序调试。
- log.setLevel("WARN") -- warn以下等级的log不会输出print(log.getLevel())log.debug(PROJECT, "debug message")log.info(PROJECT, "info message")log.warn(PROJECT, "warn message")log.error(PROJECT, "error message")
为了保证程序不会跑飞,还可以加入看门狗
- -- 添加硬狗防止程序卡死wdt.init(15000) -- 初始化watchdog设置为15ssys.timerLoopStart(wdt.feed, 10000) -- 10s喂一次狗
通过上面三个库的使用,可以看到LuatOS很容易上手,大大提高了开发效率。
最后,利用温度传感器和PWM配合,完成了一个自适应的风扇调节系统。
- sys.taskInit(function()
- local raw = 0
- local mv = 0
- while 1 do
- adc.open(1)
- sys.wait(500)
- raw, mv = adc.read(1)
- log.debug("adc", "adc1", mv)
- if mv >= 1500 then
- pwm.open(5, 1000, 100)
- elseif mv >= 1000 then
- pwm.open(5, 1000, 80)
- elseif mv >= 800 then
- pwm.open(5, 1000, 60)
- elseif mv >= 500 then
- pwm.open(5, 1000, 30)
- elseif mv >= 100 then
- pwm.open(5, 1000, 20)
- else
- pwm.open(5, 1000, 0)
- end
- adc.close(1)
- sys.wait(500)
- end
- end)