文章目录

  • **前言**
  • 介绍
  • 编译准备
  • 使用
  • 相关连接


前言

还在困扰如何更方便、快捷的学习luatos?还在困扰因硬件的限制无法学习luatos?有了win32,妈妈再也不怕我学不会luatos了~~~

介绍

win32,一个基于Windows的luatos的bsp,抛弃硬件限制,电脑上就能编译出luatos.exe执行程序,双击即可使用luatos的功能,task,log,shell,json,crypto,zbuff,fatfs,lfs2,lvgl,模拟gpio,模拟spi,后续增加串口,网络等等luatos组件,让你无需硬件轻轻松松学会luatos,调试也极其方便!!!

  • 底层FreeRTOS Kernel V10.4.3(源码位于LuatOS\components\freertos)
  • 编译环境msys, 工具cmake/make/gcc(下载链接见后文)
  • 文件系统,win32原生文件系统,以工作目录为基点
  • 默认luavm和rtos内存分配均为 1MByte

编译准备

可以自行下载msys,安装gcc和make

相关命令:

pacman -Sy 更新软件包数据
pacman -Syu 更新所有
pacman -Ss xx 查询软件xx的信息
pacman -S xx 安装软件xx

pacman -S make
pacman -S mingw-w64-i686-gcc
pacman -S cmake

也可直接下载集成好的环境 提取码:luat,下载后解压到任意盘就可以

下载cmake并安装,这里以c:Program Files\CMake目录为例

打开解压出来的msys64目录,

luatos不行了_二维码


打开mingw32.exe

luatos不行了_二维码_02


之后cd到你的win32目录下

luatos不行了_二维码_03


先别着急编译,我们先看看目录下的build_cmake.sh文件

luatos不行了_lua_04


很简单是不是,只做了指定源码路径和 build路径,如果你的cmake安装在别的目录,在这里修改即可,make -j是并行编译,你的电脑是12核心就可以改成这j12

echo done表示编译完在屏幕上输出done

我们执行./build_cmake.sh开始编译

luatos不行了_文件系统_05


luatos不行了_lua_06


编译完成,会在build目录下生成luatos.exe,至此编译完成

使用

新建一个目录,目录下新建一个main.lua,这就是我们的主代码,我们写入以下代码:

local sys = require "sys"

log.info("sys", "from win32")

sys.taskInit(function ()
    while true do
        log.info("hi", os.date())
        log.info("sys", rtos.meminfo("sys"))
        log.info("lua", rtos.meminfo("lua"))
        sys.wait(1000)
    end
end)

sys.run()

将luatos.exe拷贝到当前目录下双击即可,可以看到效果:

luatos不行了_二维码_07


程序运行起来了

再比如我们使用lvgl,以win32根目录下的main.lua为例:

local sys = require "sys"

log.info("sys", "from win32")

sys.taskInit(function ()
    sys.wait(1000)
        
	--初始化lvgl,可自定义尺寸如:log.info("lvgl", lvgl.init(480,320))
    log.info("lvgl", lvgl.init())
        
	--创建obj以及按键文本
    lvgl.disp_set_bg_color(nil, 0xFFFFFF)
    local scr = lvgl.obj_create(nil, nil)
    local btn = lvgl.btn_create(scr)
    local btn2 = lvgl.btn_create(scr)
    lvgl.obj_align(btn, lvgl.scr_act(), lvgl.ALIGN_CENTER, 0, 0)
    lvgl.obj_align(btn2, lvgl.scr_act(), lvgl.ALIGN_CENTER, 0, 50)
    local label = lvgl.label_create(btn)
    local label2 = lvgl.label_create(btn2)
    lvgl.label_set_text(label, "LuatOS!")
    lvgl.label_set_text(label2, "Hi")

    -- 二维码测试
    --local qrcode = lvgl.qrcode_create(scr, 100, 0x3333ff, 0xeeeeff)
    local qrcode = lvgl.qrcode_create(scr, 100)
    lvgl.qrcode_update(qrcode, "https://luatos.com")
    lvgl.obj_align(qrcode, lvgl.scr_act(), lvgl.ALIGN_CENTER, -100, -100)

    -- gif 加载测试
    local gif = lvgl.gif_create(scr, "/example.gif")
    if gif then
        lvgl.obj_align(gif, lvgl.scr_act(), lvgl.ALIGN_CENTER, 100, -100)
    end

    -- switch组件测试
    local sw = lvgl.switch_create(scr, nil)
    lvgl.obj_align(sw, lvgl.scr_act(), lvgl.ALIGN_CENTER, 100, 0)

    --显示scr
    lvgl.scr_load(scr)
        
	--设置按键回调
    lvgl.obj_set_event_cb(btn, function(obj, event)
        log.info("event", obj, event)
    end)
        
    while true do
        lvgl.obj_align(btn2, lvgl.scr_act(), lvgl.ALIGN_CENTER, 0, 50)
        lvgl.switch_toggle(sw, 1)
        sys.wait(500)
        lvgl.obj_align(btn2, lvgl.scr_act(), lvgl.ALIGN_CENTER, 50, 50)
        lvgl.switch_toggle(sw, 1)
        sys.wait(500)
    end
end)

sys.run()

确保要显示的example.gif在同目录下

luatos不行了_luatos不行了_08


双击luatos运行:

luatos不行了_文件系统_09

还有其他demo在module_test目录下可自行查看

其他lvgl demo:

luatos不行了_文件系统_10


修改代码直接修改重新编译即可,因为使用的cmake,如增加,删除代码文件直接修改CMakeLists.txt即可,非常方便大家熟悉之后可以尝试适配bsp/win32的uart接口,奖励200元呦~~~

luatos不行了_文件系统_11