Lua是一個(gè)小巧的腳本語(yǔ)言。作者是巴西人。該語(yǔ)言的設(shè)計(jì)目的是為了嵌入應(yīng)用程序中,從而為應(yīng)用程序提供靈活的擴(kuò)展和定制功能。
Lua腳本能夠非常easy的被C/C++ 代碼調(diào)用,也能夠反過(guò)來(lái)調(diào)用C/C++的函數(shù),這使得Lua在應(yīng)用程序中能夠被廣泛應(yīng)用。不只作為擴(kuò)展腳本,也能夠作為普通的配置文件,取代XML,Ini等文件格式,而且更easy理解和維護(hù)。
Lua的目標(biāo)是成為一個(gè)非常easy嵌入其他語(yǔ)言中使用的語(yǔ)言。大多數(shù)程序猿也覺(jué)得它的確做到了這一點(diǎn)。
非常多應(yīng)用程序使用LUA作為自己的嵌入式腳本語(yǔ)言,以此來(lái)實(shí)現(xiàn)可配置性、可擴(kuò)展性。這當(dāng)中包含魔獸世界、博德之門(mén)、憤慨的小鳥(niǎo)、VOCALOID3 等。
MDK下lua移植到stm32
移植lua
- l 加入?lua源代碼到MDK,把lua.c 和luac.c刪除。
l 改動(dòng)堆棧大?。憾炎钚?.5kb,棧最小是1.5kb。lua的空間分配在堆空間。16kb的內(nèi)存建議分配是堆11Kb,棧4Kb,留1Kb給全局變量。
在startup_stm32f10x_md.s文件里
; stack size 0x1000 == 4Kb
Stack_Size EQU 0x00001000
; heap size 0x2c00 == 11Kb
Heap_Size EQU 0x00002C00
- l 重寫(xiě)標(biāo)準(zhǔn)庫(kù)底層函數(shù)
typedef int FILEHANDLE;
#pragma import(__use_no_semihosting_swi)
#pragma import(_main_redirection)
const char __stdin_name[150];
const char __stdout_name[150];
const char __stderr_name[150];
FILEHANDLE _sys_open(const char *name, intopenmode)
{
return0;
}
int _sys_close(FILEHANDLE fh)
{
return 0;
}
int _sys_write(FILEHANDLE fh, constunsigned char *buf, unsigned len, int mode)
{
return0;
}
int _sys_read(FILEHANDLE fh, unsigned char*buf, unsigned len, int mode)
{
return0;
}
- //檢查句柄是否為終端
int _sys_istty(FILEHANDLE fh)
{
return0;
}
int _sys_seek(FILEHANDLE fh, long pos)
{
return0;
}
- //刷新句柄關(guān)聯(lián)的緩沖區(qū)
int _sys_ensure(FILEHANDLE fh)
{
return0;
}
- //返回文件當(dāng)前長(zhǎng)度
long _sys_flen(FILEHANDLE fh)
{
return0;
}
void _sys_exit(int status)
{
//while(1);
}
int _sys_tmpnam(char *name, int fileno, unsignedmaxlength)
{
return0;
}
- //將一個(gè)字符寫(xiě)入控制臺(tái)
void _ttywrch(int ch)
{
}
int remove(const char *filename)
{
return0;
}
char *_sys_command_string(char *cmd, intlen)
{
return NULL;
}
- C語(yǔ)言與lua交互
static int lua_led_on(lua_State *L)
{
GPIO_ResetBits(GPIOC,GPIO_Pin_13);
return1;
}
文章整合自:cnblogs
編輯:ymf
-
單片機(jī)
+關(guān)注
關(guān)注
6072文章
45269瀏覽量
661200 -
C語(yǔ)言
+關(guān)注
關(guān)注
183文章
7634瀏覽量
144196 -
腳本語(yǔ)言
+關(guān)注
關(guān)注
0文章
48瀏覽量
8516
發(fā)布評(píng)論請(qǐng)先 登錄
大彩講堂:VisualHMI-LUA教程-獲取與設(shè)置32位數(shù)據(jù)函數(shù)的應(yīng)用
大彩講堂:VisualHMI-LUA教程-獲取和設(shè)置16位數(shù)據(jù)函數(shù)
怎么測(cè)單片機(jī)系統(tǒng)頻率
大彩講堂:VisualHMI-LUA教程-on_run回調(diào)函數(shù)使用指南
機(jī)智云配網(wǎng)教程第三期:單片機(jī)代碼移植實(shí)戰(zhàn)
STM32與機(jī)智云連接實(shí)現(xiàn)步驟與技巧(下篇):機(jī)智云代碼移植與優(yōu)化
STM32F10xxx單片機(jī)編程手冊(cè)
STM32F103x8 STM32F103xB單片機(jī)數(shù)據(jù)手冊(cè)
STM32單片機(jī)最小系統(tǒng)電路設(shè)計(jì)
【正點(diǎn)原子STM32H7R3開(kāi)發(fā)套件試用體驗(yàn)】移植lua解釋器
nginx+lua+redis實(shí)現(xiàn)灰度發(fā)布
Linux從零到精通:最簡(jiǎn)單的Shell腳本入門(mén)教程
微軟生成式AI腳本GenAIScript的安裝與配置

單片機(jī)腳本語(yǔ)言移植lua到stm32MDK的步驟
評(píng)論