
一直对脚本语言挺感兴趣的,本次就来研究一下移植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效果: |
【STM32L562E-DK】健康手环基础界面开发(二)—— GUI移植
【STM32L562E-DK】健康手环基础界面开发(一)—— 准备工作
STM32L562E-DK 驱动FMC接口的LCD屏
Arm® TrustZone®特性面向 STM32L5 和 STM32U5 系列
STM32L5 系列微控制器和 TrustZone® 开发入门
STM32CubeL5 TFM 应用程序入门
STM32CubeIDE 中基于 STM32L5 系列的项目入门
Arm® TrustZone®特性面向 STM32L5 和 STM32U5 系列
STM32U5对比STM32L5有 哪些更新?
STM32L5 中如何关闭 TrustZone ?