0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

單片機(jī)腳本語言移植lua到stm32MDK的步驟

汽車玩家 ? 來源:cnblogs ? 作者:cnblogs ? 2021-07-22 16:54 ? 次閱讀

Lua是一個小巧的腳本語言。作者是巴西人。該語言的設(shè)計目的是為了嵌入應(yīng)用程序中,從而為應(yīng)用程序提供靈活的擴(kuò)展和定制功能。

Lua腳本能夠非常easy的被C/C++ 代碼調(diào)用,也能夠反過來調(diào)用C/C++的函數(shù),這使得Lua在應(yīng)用程序中能夠被廣泛應(yīng)用。不只作為擴(kuò)展腳本,也能夠作為普通的配置文件,取代XML,Ini等文件格式,而且更easy理解和維護(hù)。

Lua的目標(biāo)是成為一個非常easy嵌入其他語言中使用的語言。大多數(shù)程序猿也覺得它的確做到了這一點。

非常多應(yīng)用程序使用LUA作為自己的嵌入式腳本語言,以此來實現(xiàn)可配置性、可擴(kuò)展性。這當(dāng)中包含魔獸世界、博德之門、憤慨的小鳥、VOCALOID3 等。

MDK下lua移植到stm32

移植lua

  • l 加入?lua源代碼到MDK,把lua.c 和luac.c刪除。

l 改動堆棧大小:堆最小為5.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 重寫標(biāo)準(zhǔn)庫底層函數(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)前長度

long _sys_flen(FILEHANDLE fh)

{

return0;

}

void _sys_exit(int status)

{

//while(1);

}

int _sys_tmpnam(char *name, int fileno, unsignedmaxlength)

{

return0;

}

  • //將一個字符寫入控制臺

void _ttywrch(int ch)

{

}

int remove(const char *filename)

{

return0;

}

char *_sys_command_string(char *cmd, intlen)

{

return NULL;

}

static int lua_led_on(lua_State *L)

{

GPIO_ResetBits(GPIOC,GPIO_Pin_13);

return1;

}


文章整合自:cnblogs

編輯:ymf

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6023

    文章

    44376

    瀏覽量

    628407
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7575

    瀏覽量

    134092
  • 腳本語言
    +關(guān)注

    關(guān)注

    0

    文章

    47

    瀏覽量

    8184
收藏 人收藏

    評論

    相關(guān)推薦

    單片機(jī)STM32可以用Python寫嗎?可以的開發(fā)板有哪些?

    近年來,隨著嵌入式技術(shù)的發(fā)展,Python語言逐漸被引入單片機(jī)開發(fā)中,尤其是一些高性能的單片機(jī)上。這一趨勢給開發(fā)者帶來了極大的便利,尤其是在快速原型設(shè)計和實驗中。本文將詳細(xì)探討
    的頭像 發(fā)表于 09-05 08:00 ?239次閱讀
    <b class='flag-5'>單片機(jī)</b><b class='flag-5'>STM32</b>可以用Python寫嗎?可以的開發(fā)板有哪些?

    stm32單片機(jī)用什么軟件編程

    STM32單片機(jī)是一種廣泛應(yīng)用于嵌入式系統(tǒng)領(lǐng)域的微控制器,具有高性能、低功耗、豐富的外設(shè)接口等特點。要對STM32單片機(jī)進(jìn)行編程,需要選擇合適的軟件工具。 概述
    的頭像 發(fā)表于 09-02 10:16 ?335次閱讀

    【龍芯2K0300蜂鳥板試用】+3.移植lualoongarch

    1.Lua簡介 Lua 是一種輕量小巧的腳本語言,用標(biāo)準(zhǔn)C語言編寫并以源代碼形式開放,其設(shè)計目的是為了嵌入應(yīng)用程序中,從而為應(yīng)用程序提供靈活的擴(kuò)展和定制功能。
    發(fā)表于 08-18 03:31

    STM32單片機(jī)有哪幾種常見的開發(fā)環(huán)境?

    STM32單片機(jī)是一款廣泛應(yīng)用于嵌入式系統(tǒng)開發(fā)的單片機(jī),針對其開發(fā),有以下幾種常見的方式:STM32單片機(jī)有哪幾種常見的開發(fā)環(huán)境?KeilM
    的頭像 發(fā)表于 05-18 08:04 ?2181次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>單片機(jī)</b>有哪幾種常見的開發(fā)環(huán)境?

    STM32單片機(jī)的特點和功能是什么

    STM32單片機(jī)是一款基于ARM Cortex-M內(nèi)核的32位閃存微控制器,由STMicroelectronics公司(意法半導(dǎo)體)生產(chǎn)。STM32單片機(jī)具有高性能、低功耗、豐富的外設(shè)
    的頭像 發(fā)表于 01-03 15:33 ?1.1w次閱讀

    stm32單片機(jī)5v電壓怎么提供

    USB線提供電源、或者使用外部電源模塊。 使用外部穩(wěn)壓器: 使用外部穩(wěn)壓器是最常見的方式之一,可以穩(wěn)定地提供5V電壓給STM32單片機(jī)。具體步驟如下: 選擇一個合適的外部穩(wěn)壓器,推薦使用L7805。 連接穩(wěn)壓器的輸入引腳
    的頭像 發(fā)表于 12-22 14:30 ?1.5w次閱讀

    如何將FreeMODBUS協(xié)議棧移植AT32F43x單片機(jī)方法

    電子發(fā)燒友網(wǎng)站提供《如何將FreeMODBUS協(xié)議棧移植AT32F43x單片機(jī)方法.pdf》資料免費下載
    發(fā)表于 12-18 11:15 ?0次下載
    如何將FreeMODBUS協(xié)議棧<b class='flag-5'>移植</b><b class='flag-5'>到</b>AT32F43x<b class='flag-5'>單片機(jī)</b>方法

    STM32單片機(jī)常用的引腳及功能

    STM32單片機(jī)是由意法半導(dǎo)體公司(STMicroelectronics)推出的一種高性能、低功耗的微控制器。它具有豐富的外設(shè)功能和強(qiáng)大的處理能力,廣泛應(yīng)用于各種嵌入式系統(tǒng)的開發(fā)中。 在STM32
    的頭像 發(fā)表于 12-07 16:22 ?2w次閱讀

    你用過哪些編程語言開發(fā)單片機(jī)?

    C語言是最常用的一種用于單片機(jī)的開發(fā)語言,也是一種高級編程語言,具有較好的可移植性和可讀性。對于單片機(jī)
    發(fā)表于 12-04 10:18 ?973次閱讀

    javascript運行在什么的腳本語言

    avaScript 是一種運行在客戶端的腳本語言,也是目前最流行的腳本語言之一。它可以嵌入 HTML 頁面中,通過瀏覽器來解釋和執(zhí)行。這意味著它不需要獨立的編譯器,而是由瀏覽器動態(tài)執(zhí)行,因此它是
    的頭像 發(fā)表于 12-03 11:33 ?751次閱讀

    關(guān)于AD5940移植其他單片機(jī)上的問題求解

    你好,我想問一下關(guān)于AD5940移植其他單片機(jī)上的問題,我有以下問題。 1、我在調(diào)試過程中,單片機(jī)可以正常發(fā)送數(shù)據(jù),但無法讀回AD5940芯片的數(shù)據(jù),為什么會出現(xiàn)這種情況?AD594
    發(fā)表于 12-01 06:05

    腳本語言和編程語言的區(qū)別

    腳本語言和編程語言是計算機(jī)語言的兩個主要分類。盡管兩者都是用于編寫計算機(jī)程序的工具,但它們在設(shè)計和運行方式上存在一些顯著的區(qū)別。下面將詳細(xì)探討腳本語言和編程
    的頭像 發(fā)表于 11-22 14:33 ?2520次閱讀

    什么是C語言?單片機(jī)有什么特點?為什么要用C語言編程?

    隨著技術(shù)的發(fā)展,電子產(chǎn)品越來越多,方便了我們的日常生活,大多數(shù)電子產(chǎn)品上都有單片機(jī),而單片機(jī)是通過執(zhí)行軟件邏輯來實現(xiàn)功能的。而單片機(jī)編程最合適的編程語言是匯編
    的頭像 發(fā)表于 11-21 10:06 ?1319次閱讀
    什么是C<b class='flag-5'>語言</b>?<b class='flag-5'>單片機(jī)</b>有什么特點?為什么要用C<b class='flag-5'>語言</b>編程?

    單片機(jī)ADC,十大C語言濾波算法

    單片機(jī)ADC,十大C語言濾波算法
    的頭像 發(fā)表于 10-24 15:53 ?1043次閱讀

    請問avr程序如何移植STC單片機(jī)?

    avr程序如何移植STC單片機(jī)?
    發(fā)表于 10-08 08:38