|
楼主 |
发表于 2011-11-1 19:22:40
|
显示全部楼层
第一部体验:注_册一个C函数
【相关介绍】
----------------------------------------------------------------------------------------------------
想通过lua调用C函数,必须把C函数注_册到lua中,需要调用lua_register进行注_册,然后调用就OK了
这里面的C函数只是实现了简单的串口打印功能
----------------------------------------------------------------------------------------------------
细节的东西还不是很清楚,先从体验开始吧,串口终端上蹦出字母的时候,还是很兴奋滴~
为了方便,直接贴上相关代码
--------------------------------------------------------------------------------------
static int USART_Send1(lua_State *L)
{
printf("lua come on!1\r\n");
}
static int USART_Send2(lua_State *L)
{
printf("lua come on!2\r\n");
}
static int USART_Send3(lua_State *L)
{
printf("lua come on!3\r\n");
}
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
lua_State *L ;
u8 buf[100] = {"USART_Send1(L);USART_Send2(L);USART_Send3(L);"};
RCC_Configuration();
NVIC_Configuration();
SysTick_Init();
uart_init(72,9600);
/* Enable the FSMC Clock */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_1);
ili9320_Initializtion();
ili9320_Clear(Black);
ili9320_Clear(Blue);
ili9320_DisplayStringLine(Line0,"Lua Start...",Red,Blue);
printf("Lua Start...\r\n");
L = lua_open();
luaopen_base(L);
//注_册C函数
lua_register(L, "USART_Send1", USART_Send1);
lua_register(L, "USART_Send2", USART_Send2);
lua_register(L, "USART_Send3", USART_Send3);
//调用脚本
luaL_dostring(L, buf);
/* Infinite loop */
while (1)
{
}
}
--------------------------------------------------------------------------------------
共享整个工程:
ourdev_690786L0Y99Y.rar(文件大小:1.47M)
修改原因:本来是说操作一个硬件,后来想想,这充其量是注_册一个C函数.. |
|