2003|7

504

帖子

4

TA的资源

纯净的硅(高级)

楼主
 

【ST NUCLEO-U575ZI-Q 测评 】LUA移植 [复制链接]

Rec 0001

proj.zip (2.41 MB, 下载次数: 3)

前言

目前市面上有很多嵌入式平台使用MicroPython进行脚本开发,很是方便。实际上还有一门优秀的脚本语言,LUA也适合移植到嵌入式平台中使用。鉴于MicroPython的内容网上已经够多了,所以这里不再移植MicroPython,而是LUA。

参考http://www.lua.org/

过程

准备

从http://www.lua.org/ftp/下载最新版本

 

解压到我们自己的工程,并添加所有c文件(除了luac.c

)到工程中。

 

 

 

串口

交互操作使用串口,我们使用PA9和PA10对应USART1,接到了板载STLINK的虚拟串口,这样只要接一个USB即可供电,仿真,又可以串口通讯。

串口的操作参见https://bbs.eeworld.com.cn/thread-1228718-1-1.html

https://bbs.eeworld.com.cn/thread-1228720-1-1.html

 

打印输出时增加回显

 

int fputc(int c, FILE *stream)

{

/* Your implementation of fputc(). */

uint8_t ch=0;

if((uint8_t)ch == (uint8_t)'\n')

{

ch = '\r';

uart_write(&ch,1);

}

ch = (uint8_t)c;

uart_write(&ch,1);

if((uint8_t)ch == (uint8_t)'\r')

{

ch = '\n';

uart_write(&ch,1);

}

return c;

}

 

 

不用fgets所以fgetc不用,而是使用xprintf的xgets

移植修改

Lua.c时一个交互式的解释器,我们可以直接使用

#include "xprintf.h"

436行         fgets(b, LUA_MAXINPUT, stdin) != NULL)  /* get line */改为

xgets(b,LUA_MAXINPUT) != NULL)

因为fgets有点问题,所以使用xprintf的xgets。参见https://bbs.eeworld.com.cn/thread-1228721-1-1.html

 

int main (int argc, char **argv) {改为

int lua_main (int argc, char **argv) {

 

在我们的main中调用lua_main即可

 

实现三个接口函数

 

volatile uint32_t s_ms_u32 = 0;

time_t time(time_t * t)

{

if(t != 0)

{

*t = s_ms_u32/1000;

}

return s_ms_u32/1000;

}

 

int system(const char s)

{

return 0;

}

 

void exit(int p)

{

 

}

 

 

其中s_ms_u32在systick中断中递增

 

void SysTick_Handler(void)

{

static volatile uint32_t num = 0;

s_ms_u32++;

if(num++ >= 1000)

{

LL_GPIO_TogglePin(GPIOB, 1u<<7);

LL_GPIO_TogglePin(GPIOG, 1u<<2);

LL_GPIO_TogglePin(GPIOC, 1u<<7);

num=0;

}

HAL_IncTick();

}

 

 

修改堆栈加大一点

 

 

Main中调用 lua_main(3,cmd);即可

 

 

 

测试

编译下载运行

先来个HelloWorld

 

 

打印时间

 

 

打印日期

 

 

其他操作可以参考lua的相关文档。

总结

LUA是MicroPython外一个优秀的脚本语言,可以移植到MCU等资源较小的嵌入式平台。代码用ANSI-C写成,移植很简单,只需要实现几个接口即可。后面我们就可以发挥脚本语言的优势,移植外设部分,就可以实现lua操作硬件了。

 

此帖出自stm32/stm8论坛

最新回复

测评汇总:免费申请|ST NUCLEO-U575ZI-Q https://bbs.eeworld.com.cn/thread-1228653-1-1.html   详情 回复 发表于 2023-1-12 09:44
点赞 关注
 

回复
举报

6861

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

看来LUA确实适合移植到嵌入式平台中

此帖出自stm32/stm8论坛
 
 

回复

7096

帖子

11

TA的资源

版主

板凳
 
lua,移植,是要指定芯片吗?
此帖出自stm32/stm8论坛

点评

lua资源需求很小,ANSI-C编写,可移植性很好,只要资源够可以移植到任何MCU上使用。 使用lua.c解释器只需要实现基本的标准输入输出接口即可。  详情 回复 发表于 2022-12-17 23:43
 
 

回复

504

帖子

4

TA的资源

纯净的硅(高级)

4
 
lugl4313820 发表于 2022-12-17 23:22 lua,移植,是要指定芯片吗?

lua资源需求很小,ANSI-C编写,可移植性很好,只要资源够可以移植到任何MCU上使用。

使用lua.c解释器只需要实现基本的标准输入输出接口即可。

此帖出自stm32/stm8论坛

点评

感谢大佬 分享,我也试着学学,记得我入门那时就用过esp8266的lua。但是那时没有学好。  详情 回复 发表于 2022-12-18 10:24
 
 
 

回复

7096

帖子

11

TA的资源

版主

5
 
qinyunti 发表于 2022-12-17 23:43 lua资源需求很小,ANSI-C编写,可移植性很好,只要资源够可以移植到任何MCU上使用。 使用lua.c解释器 ...

感谢大佬 分享,我也试着学学,记得我入门那时就用过esp8266的lua。但是那时没有学好。

此帖出自stm32/stm8论坛
 
 
 

回复

7671

帖子

2

TA的资源

五彩晶圆(高级)

6
 

xprintf,学习了!

此帖出自stm32/stm8论坛
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复

274

帖子

8

TA的资源

纯净的硅(初级)

7
 

这个挺好玩的,在ESP8266的那个nodemcu上见过。这个和microPython比起来哪个更好用呢?

此帖出自stm32/stm8论坛
 
 
 

回复

1万

帖子

2853

TA的资源

管理员

8
 

测评汇总:免费申请|ST NUCLEO-U575ZI-Q https://bbs.eeworld.com.cn/thread-1228653-1-1.html

此帖出自stm32/stm8论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名玩板看这里:
https://bbs.eeworld.com.cn/elecplay.html
EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表