1-STM32嵌入LUA开发(控制小灯闪耀)

1-STM32嵌入LUA开发(控制小灯闪耀),第1张

概述今天因为想让STM32完美的处理字符串,所以就想着让STM32嵌入lua,本来想用f103c8t6,但是一编译就提示内存不足...... 所以单片机的型号选择的 \   我下载到了RBT6的芯片上测试的 先说一下最终实现的效果吧,就是用lua语言控制单片机的PC13  每间隔500Ms反转一次 实现功能的部分 static int lua_led_on(lua_State *L){ PCou

今天因为想让STM32完美的处理字符串,所以就想着让STM32嵌入lua,本来想用f103c8t6,但是一编译就提示内存不足......

所以单片机的型号选择的

\

 

我下载到了RBT6的芯片上测试的

先说一下最终实现的效果吧,就是用lua语言控制单片机的PC13  每间隔500Ms反转一次

实现功能的部分

static int lua_led_on(lua_State *L){  PCout(13) = 1;  return 1;}static int lua_led_off(lua_State *L){  PCout(13) = 0;  return 1;} static int lua_delay(lua_State *L){  int num;  num= lua_tointeger(L,1);  delay_ms(num);  return 1;}static const struct luaL_Reg mylib[]={  {"led_on",lua_led_on},{"led_off",lua_led_off},{"delay",lua_delay},{NulL,NulL}};const char LUA_SCRIPT_GLOBAL[] ="  \off = 500     on = 500       while 1 do  led_on()  delay(off)     led_off()         delay(on)      end";

调用部分

    while(1)    {        lua_State *L;        L = luaL_newstate(); /* 建立Lua运行环境 */      luaopen_base(L);        luaL_setfuncs(L,mylib,0);    luaL_dostring(L,LUA_SCRIPT_GLOBAL); /* 运行Lua脚本 */                    while(1);

其实虽然可以了,但是也没什么感觉....因为可能需要裁剪很多功能才能运行在c8t6上,所以,唉,不开心......

现在说一下移植(赋值粘贴加修改)的步骤

参考文章

https://blog.csdn.net/tinyfar/article/details/73727484

首先是下载Lua的源码

http://www.lua.org/ftp/lua-5.3.5.tar.gz

下载之后

 

 把这个文件夹拷贝出来

 

放在自己的工程目录下,位置随意,只要自己知道就行,因为需要手动设置告诉软件一些.h的位置,这个大家应该知道

 

 

 

 

 设置头文件位置

 

 

 

 

现在可以编译

可能会报这种错误

 

 

 按理说这样其实可以测试了,我的源码还修改了个地方

其实就是重定向一些函数

现在看主函数

#include "include.h"#include "main.h"#include "lua.h"#include "lauxlib.h"#include "lualib.h"const char __stdin_name[150];const char __stdout_name[150];const char __stderr_name[150];typedef int fileHANDLE;fileHANDLE _sys_open(const char *name,int openmode){ return 0;}int _sys_close(fileHANDLE fh){    return 0;}int _sys_write(fileHANDLE fh,const unsigned char *buf,unsigned len,int mode){    return 0;}int _sys_read(fileHANDLE fh,unsigned char*buf,int mode){    return 0;}//检查句柄是否为终端int _sys_istty(fileHANDLE fh){    return 0;}int _sys_seek(fileHANDLE fh,long pos){    return 0;}//刷新句柄关联的缓冲区int _sys_ensure(fileHANDLE fh){    return 0;}//返回文件当前长度long _sys_flen(fileHANDLE fh){    return 0;}voID _sys_exit(int status){    //while(1);}int _sys_tmpnam(char *name,int fileno,unsigned maxlength){    return 0;}//将一个字符写入控制台voID _ttywrch(int ch){}int remove(const char *filename){    return 0;}char *_sys_command_string(char *cmd,int len){ return NulL;}static int lua_led_on(lua_State *L){  PCout(13) = 1;  return 1;}static int lua_led_off(lua_State *L){  PCout(13) = 0;  return 1;} static int lua_delay(lua_State *L){  int num;  num= lua_tointeger(L,NulL}};const char LUA_SCRIPT_GLOBAL[] ="  \off = 500     on = 500       while 1 do  led_on()  delay(off)     led_off()         delay(on)      end";int main(voID){    NVIC_Configuration();    GpioInit();        Timer2_Config();    Uart123Init(115200,115200,115200);     //串口初始化    rbCreate(&Uart1rb,Usart1SendBuff,Usart1SendLen);//创建环形队列--串口1    rbCreate(&Uart2rb,Usart2SendBuff,Usart2SendLen);//创建环形队列--串口2    rbCreate(&Uart3rb,Usart3SendBuff,Usart3SendLen);//创建环形队列--串口3//     FlashReadSaveDataInit();//      //ADC_Config();//配置ADC采集(不使用DMA)        DMA_ADC_Config();//使用DMA采集ADC    DMA_Config();        AdcGpioConfig();//配置ADC采集引脚    //     IWDG_Init(IWDG_Prescaler_256,156*5); //时钟40K,分频数为256,156.25HZ,6.4ms;喂狗最小间隔5S        while(1)    {        lua_State *L;        L = luaL_newstate(); /* 建立Lua运行环境 */      luaopen_base(L);        luaL_setfuncs(L,LUA_SCRIPT_GLOBAL); /* 运行Lua脚本 */                    while(1);                //         IWDG_Feed();//喂狗//     Testing();//测试函数//         //         if(Usart1ReadFlage)//         {//             Usart1ReadFlage = 0;//             PutData(&Uart1rb,USART1,Usart1ReadBuff,Usart1ReadCntcopy);//     }            }}/*** @brIEf  测试函数* @param  * @param  None* @param  None* @retval None* @example **/voID Testing(voID){    }

其实就执行了lua语言

实质是Lua调用C

 

源码下载

链接:https://pan.baIDu.com/s/13N0sPkM1f8Egoap0oZCR1g 密码:slxt

总结

以上是内存溢出为你收集整理的1-STM32嵌入LUA开发(控制小灯闪耀)全部内容,希望文章能够帮你解决1-STM32嵌入LUA开发(控制小灯闪耀)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1234811.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存