硬汉嵌入式论坛

 找回密码
 立即注册
查看: 10280|回复: 34
收起左侧

STM32-V6 LUA简单移植

  [复制链接]

36

主题

142

回帖

255

积分

高级会员

积分
255
发表于 2019-8-16 11:36:34 | 显示全部楼层 |阅读模式
以V6-LED例程为模板,LUA调用LED函数控制LED闪烁。
1.下载LUA源码,最新为5.3.5
2.不用lua.c,luac.c文件
3.修改Heap_Size       EQU     0x0002C00
4.添加函数time,exit,system
5.在LUA注册需要调用的函数
static const struct luaL_Reg mylib[]=
{
        {"led_on",lua_led_on},
        {"led_off",lua_led_off},
        {"delay",lua_delay},
        {NULL,NULL}
};


luaL_setfuncs(L, mylib, 0);
6.运行LUA脚本
const char LUA_SCRIPT_GLOBAL[] ="  \
        off = 500     \
        on = 500       \
        while 1 do \
        led_on() \
        delay(on)    \
        led_off()        \
        delay(off)      \
        end";


luaL_dostring(L, LUA_SCRIPT_GLOBAL);

STM32-V6 LUA.zip

2.14 MB, 下载次数: 738

评分

参与人数 1金币 +2 收起 理由
龙之谷 + 2 很给力!

查看全部评分

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106721
QQ
发表于 2019-8-16 11:42:09 | 显示全部楼层
非常感谢分享
回复

使用道具 举报

36

主题

2039

回帖

2147

积分

至尊会员

积分
2147
发表于 2019-8-16 11:46:06 | 显示全部楼层
最近论坛不少好东西啊
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

36

主题

142

回帖

255

积分

高级会员

积分
255
 楼主| 发表于 2019-8-16 11:52:48 | 显示全部楼层
未完善部分
1.内存管理, lauxlib.c 文件里调用的 free 和 realloc 函数,可以减少堆栈
2.重定向输出
回复

使用道具 举报

3

主题

38

回帖

47

积分

新手上路

积分
47
发表于 2019-8-16 22:07:22 | 显示全部楼层
请问楼主,这样编程有什么好处或者优势呢?
回复

使用道具 举报

36

主题

142

回帖

255

积分

高级会员

积分
255
 楼主| 发表于 2019-8-19 09:23:02 | 显示全部楼层
也许在明天 发表于 2019-8-16 22:07
请问楼主,这样编程有什么好处或者优势呢?

最简单的用法:

实现配置参数,比如我们原来的产品要有些参数来控制产品运行方式,一般要实现一个参数配置协议,然后呢,还要提供一个参数配置软件等。用Lua脚本就直接搞定(para1=... ; para2=....,   para3=....     ),c里面很容易就得到脚本里面的值(tonumber,tosring),而且一目了然,可以让用户直接修改脚本,就实现了参数修改了。是不是比ini,xml文件更简单,更方便?用户现场他想改就改。

更深入点的用法:

我们的产品,有个计算公式,是根据用户的应用变化的,并且鬼知道用户想用个什么公式来计算,那么很简单,把这个公式用lua脚本实现一个公式计算函数,就可以了,我们的c可以调用lua里面定义的函数,这个公式可以有多复杂?想想愤怒的小鸟里面那么精确的重力抛物线计算都可以实现,就知道了。并且可以得到函数返回值。用户现场他想改就改。


更深入点的用法:

我们的产品,有个控制过程,是根据用户的应用变化的,并且鬼知道用户想用个什么过程来控制,那么很简单,把这个公司用lua脚本实现一个过程函数,就可以了,我们的c可以调用lua里面定义的过程函数。实现用户希望的过程控制,用户现场他想改就改。


更深入的用法:

我们的用户很牛X,他想控制连整个运行方式,那么好,我们提供c api,提供后台任务,用户前台控制任务他自己用Lua去编写.用户现场他想改就改。

更深入的用法:

我们的一些用户更牛X,他想直接控制整个硬件,只是自己不实现硬件,那么好,我们提供c api,把单片机的AD, DA ,PWM,Timer,中断全部都注_册成lua函数,他想怎么玩就怎么玩。 参见:elua,  www.eluaproject.net

更深入的用法:
除了这些,lua提供文件系统,提供web server,提供socket,提供线程.....,提供shell,提供操作系统的很多东东,但又不是操作系统。参见:elua,  www.eluaproject.net
回复

使用道具 举报

12

主题

134

回帖

170

积分

初级会员

积分
170
发表于 2019-8-19 20:08:31 | 显示全部楼层
感谢分享!
回复

使用道具 举报

36

主题

142

回帖

255

积分

高级会员

积分
255
 楼主| 发表于 2019-8-22 10:08:08 | 显示全部楼层
官方资料中文翻译,一个5.3参考手册,另一个5.3编程手册

LUA编程(programming+in+lua).pdf

1.71 MB, 下载次数: 1086

Lua_5.3_manual.pdf

3.45 MB, 下载次数: 1078

回复

使用道具 举报

0

主题

43

回帖

43

积分

新手上路

积分
43
发表于 2019-8-27 08:36:06 | 显示全部楼层
谢谢分享,不错
回复

使用道具 举报

0

主题

6

回帖

6

积分

新手上路

积分
6
发表于 2019-10-15 19:36:49 | 显示全部楼层
你好,我将这个移植到stm407上, 裸机 debug 先可以运行.掉电重新上电就进入硬件错误?请问你遇到这种情况吗?
回复

使用道具 举报

0

主题

6

回帖

6

积分

新手上路

积分
6
发表于 2019-10-15 19:46:33 | 显示全部楼层
你好,我使用这个demo <STM32-v6 LUA>中的main函数逻辑移植到stm32f407 上 debug 模式可以运行,,掉电重新启动就会死机. (板子 不添加lua 是正常的)
回复

使用道具 举报

36

主题

142

回帖

255

积分

高级会员

积分
255
 楼主| 发表于 2019-10-16 09:18:52 | 显示全部楼层
会唱歌的墙 发表于 2019-10-15 19:46
你好,我使用这个demo 中的main函数逻辑移植到stm32f407 上 debug 模式可以运行,,掉电重新启动就会死机. (板 ...

加大你的Heap_Size
回复

使用道具 举报

0

主题

6

回帖

6

积分

新手上路

积分
6
发表于 2019-10-16 09:41:59 | 显示全部楼层
takent 发表于 2019-10-16 09:18
加大你的Heap_Size

已经加了很大了,debug 模式可以正常运行.掉电重启就挂了.
define symbol __ICFEDIT_size_cstack__ = 0x5000;
define symbol __ICFEDIT_size_heap__   = 0x6000;
回复

使用道具 举报

0

主题

6

回帖

6

积分

新手上路

积分
6
发表于 2019-10-16 10:03:48 | 显示全部楼层
会唱歌的墙 发表于 2019-10-16 09:41
已经加了很大了,debug 模式可以正常运行.掉电重启就挂了.
define symbol __ICFEDIT_size_cstack__ = 0x5 ...

下面是代码
回复

使用道具 举报

0

主题

6

回帖

6

积分

新手上路

积分
6
发表于 2019-10-16 11:07:20 | 显示全部楼层

这个就是代码,

V5-001a_GPIO实验_跑马灯_lua.7z

5.71 MB, 下载次数: 56

回复

使用道具 举报

82

主题

401

回帖

667

积分

金牌会员

积分
667
QQ
发表于 2020-3-17 15:19:25 | 显示全部楼层
感谢老铁分享代码,我做了一个 代码转换C语言数组(HTML LUA ) 的小工具,很方便的将 lua 代码转换成 C语言数组,欢迎下载试用  提出修改建议。


http://www.armbbs.cn/forum.php?m ... 8&fromuid=18397
(出处: 硬汉嵌入式论坛)
武汉天纵鹏元科技有限公司。承接嵌入式项目开发,相关技术交流。STM32,物联网,工业控制方向。QQ  408137104
回复

使用道具 举报

0

主题

6

回帖

6

积分

新手上路

积分
6
发表于 2020-3-19 21:21:40 | 显示全部楼层
前来学习。
回复

使用道具 举报

0

主题

59

回帖

59

积分

初级会员

积分
59
发表于 2020-3-20 10:43:37 | 显示全部楼层
我想问下楼主,看你讲的用处1,请问如果用lua更改配置参数和用串口直接发配置参数有什么不同吗?;用处2,3好像lua更合适
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2020-3-23 17:29:13 | 显示全部楼层
请问下,移植过去了,程序在跑,怎么交互呢?比方要设置几个参数,写好的lua脚本怎么上传到单片机?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106721
QQ
发表于 2020-3-23 19:22:19 | 显示全部楼层
573063615 发表于 2020-3-23 17:29
请问下,移植过去了,程序在跑,怎么交互呢?比方要设置几个参数,写好的lua脚本怎么上传到单片机?

交互的方式很多,我们H7-TOOL的上位机交互很方便,更新LUA脚本,或者PC联调均可。


H7-TOOL的LUA脚本API函数列表和调用方法,共计77个(2020-03-18)
http://www.armbbs.cn/forum.php?mod=viewthread&tid=96905
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106721
QQ
发表于 2020-3-23 19:23:09 | 显示全部楼层
zhousun 发表于 2020-3-20 10:43
我想问下楼主,看你讲的用处1,请问如果用lua更改配置参数和用串口直接发配置参数有什么不同吗?;用处2,3 ...

这种更新更方便啊。

H7-TOOL的LUA脚本API函数列表和调用方法,共计77个(2020-03-18)
http://www.armbbs.cn/forum.php?mod=viewthread&tid=96905
回复

使用道具 举报

1

主题

369

回帖

372

积分

高级会员

积分
372
发表于 2021-10-25 14:11:34 | 显示全部楼层
看到硬汉哥的iic lua分享,又来温习一下
回复

使用道具 举报

0

主题

12

回帖

12

积分

新手上路

积分
12
发表于 2022-9-23 16:25:42 | 显示全部楼层
调佣 luaL_openlibs 函数就进入到硬件中断了,不知道是什么原因
回复

使用道具 举报

3

主题

49

回帖

58

积分

初级会员

积分
58
发表于 2023-6-30 11:07:42 | 显示全部楼层
感觉这个lua才是在单片机中运行的,但是缺少这方面的应用实例,H7Tool是在上位机上做的,和楼主这个应用场景好像都不一样吧!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106721
QQ
发表于 2023-6-30 11:10:39 | 显示全部楼层
跟着硬汉学 发表于 2023-6-30 11:07
感觉这个lua才是在单片机中运行的,但是缺少这方面的应用实例,H7Tool是在上位机上做的,和楼主这个应用场 ...

一样的,上位机仅仅编辑LUA用的,然后下载到TOOL里面立即执行,或者下载到TOOL的eMMC磁盘里面,TOOL可以脱机加载LUA文件,离线执行。
回复

使用道具 举报

3

主题

49

回帖

58

积分

初级会员

积分
58
发表于 2023-6-30 11:11:50 | 显示全部楼层
eric2013 发表于 2023-6-30 11:10
一样的,上位机仅仅编辑LUA用的,然后下载到TOOL里面立即执行,或者下载到TOOL的eMMC磁盘里面,TOOL可以 ...

明白了,原来是这样!确实方便很多!谢谢硬汉哥!
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2023-7-24 19:03:43 | 显示全部楼层
很不错,找时间玩玩看
回复

使用道具 举报

20

主题

94

回帖

154

积分

初级会员

积分
154
发表于 2023-9-9 00:03:21 | 显示全部楼层
在H7中集成一个Lua,需要多少RAM的开销。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106721
QQ
发表于 2023-9-9 08:10:26 | 显示全部楼层
ifree 发表于 2023-9-9 00:03
在H7中集成一个Lua,需要多少RAM的开销。

可以考虑测试下楼主这个跑马灯程序的最小RAM需求。

基本就是LUA的最小需求了。
回复

使用道具 举报

20

主题

94

回帖

154

积分

初级会员

积分
154
发表于 2023-9-9 20:31:28 | 显示全部楼层
eric2013 发表于 2023-9-9 08:10
可以考虑测试下楼主这个跑马灯程序的最小RAM需求。

基本就是LUA的最小需求了。

谢谢硬汉歌,我仿照这个程序的例子,把Lua移植到了H7上,现在看到点灯已经闪烁了。
堆、栈已经改到下面的值了
Stack_Size      EQU     0x00008000
Heap_Size       EQU     0x00002C00
当要运行Lua程序时,如何确定程序的RAM消耗呢?比如lua中要定义变量,能定义多大的,由什么来决定?
H7Tool集成了Lua,不知道板子上是不是扩展了RAM芯片。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106721
QQ
发表于 2023-9-12 07:28:03 | 显示全部楼层
ifree 发表于 2023-9-9 20:31
谢谢硬汉歌,我仿照这个程序的例子,把Lua移植到了H7上,现在看到点灯已经闪烁了。
堆、栈已经改到下面 ...
当要运行Lua程序时,如何确定程序的RAM消耗呢?


可以看堆最小剩余情况。
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2024-1-3 19:18:36 | 显示全部楼层
eric2013 发表于 2023-6-30 11:10
一样的,上位机仅仅编辑LUA用的,然后下载到TOOL里面立即执行,或者下载到TOOL的eMMC磁盘里面,TOOL可以 ...

那需要单片机要有文件系统,用来保存xx.lua文件了?,裸机是不能用了吗
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106721
QQ
发表于 2024-1-4 09:00:06 | 显示全部楼层
yinghan123 发表于 2024-1-3 19:18
那需要单片机要有文件系统,用来保存xx.lua文件了?,裸机是不能用了吗

裸机的可以,就是数组方式,不过没有文件系统方便。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-1 08:30 , Processed in 0.338785 second(s), 40 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表