STMWoodData
发布时间:2025-2-11 23:10
|
一直对脚本语言挺感兴趣的,本次就来研究一下移植lua脚本语言到MCU上。lua脚本语言以前还是很火的,在python出来之前, 它广泛应用于游戏、嵌入式系统和应用程序扩展。 首先介绍一下Lua脚本语言。Lua 是一种轻量级、高效的脚本语言,设计初衷是为了嵌入应用程序中,提供灵活的扩展和定制功能。 它主要有以下几个特点: 1,轻量级: Lua 的核心非常小巧,编译后的解释器仅约 200KB,适合资源受限的环境。 2,高效: Lua 的执行速度接近 C 语言,得益于其基于寄存器的虚拟机。 3,可嵌入性: Lua 易于嵌入到 C/C++ 等宿主语言中,常用于游戏引擎、嵌入式系统等。 4,动态类型: Lua 是动态类型语言,变量无需声明类型,类型与值绑定。 5,自动内存管理: Lua 使用垃圾回收机制,自动管理内存。 6,简单语法: Lua 语法简洁,学习曲线平缓。 下面介绍一下如何移植lua脚本语言到mcu上运行。 先在官网下载lua源码包,每个版本的lua源码包都有小幅度的函数更改,下载最新源码包即可。 下载地址:https://www.lua.org/download.html
解压下载的lua源码,将src文件夹复制粘贴到已有的项目工程中,新建分组LUA,并将.c添加到该分组中。 工程中要去掉lua.c和luac.c这两个文件。
接下来添加lua头文件路径。
添加 time(time_t time)和 system(const char string)。这里简单添加函数即可。主要用于实现时间获取函数。在Lua中主要用于获取时间和随机数种子。这里简单添加函数实现用于测试。
再就是修改堆栈大小,尽可能加大一点,要不然容易HardFault。因为Lua中用到了动态内存分配。
至此实现lua移植,下面来测试lua库是否移植成功。 下面实现lua字符串控制led闪烁,在main.c中加入头文件。
定义一个luaL_Reg结构数组,把上面的C函数列入,并以字符串的方式命名。
编写脚本字符串,实现led闪烁10次。
编译无错误后,将代码下载到开发板中,就可以实现led的闪烁。 下面是实现通过串口shell运行lua脚本代码:
通过串口简单运行lua效果:
|
STM32L562DK探索板——测试小结
STM32L562DK探索板——给Audio Play添加音量控制功能
STM32L562DK探索板——Audio Play使用的疑惑
STM32L562DK探索板——重写Led闪烁demo
STM32L562DK探索板——触摸菜单的实验
STM32L562DK探索板——简单的显示变量函数
STM32L562DK探索板——建立演示菜单
STM32L562DK探索板——字符显示功能的剖析
STM32L562DK探索板——继续测试Audio
STM32L562DK探索板——初试显示汉字
微信公众号
手机版