关于EMWIN移植、enwin调试时候卡GUI_Init的问题

时间:2024-04-13 08:08:28

最近在调试移植emwin到STM32时候出现了一些问题,百度后发现之前有不少人也出现了相应的问题,但都没有

看到有用的解决方法出来。希望我这个文章能帮到一些朋友。

 根据emwin使用指南开始移植emwin,移植完毕并编译通过后,下载到开发板,发现除了屏幕校准完毕之后屏幕就

没有其它东西了,加个简单的LCD_ShowString能够显示出来,这就排除了屏幕接线问题。

 接下来用串口调试程序,发现程序卡在GUI_Init()这里了(GUI_Init()前面已经初始化了CRC时钟,不关

这的问题),GUI_Init是内部函数,不能在MDK中go to difine 查看,只能查看相关资料,发现GUI_Init()

函数主要是按顺序调用了GUI_X_Config()、LCD_X_Config()和LCD_X_DisplayDriver()这三个函数,所以在

这三个函数设置断点,在看到GUI_X_Config()里面时发现我用的是外部RAM,

关于EMWIN移植、enwin调试时候卡GUI_Init的问题

然而我这开发板并没有外部RAM,故把#define USE_EXRAM 1改为#define USE_EXRAM  0,即使用内部RAM,

再往下看,程序是卡LCD_X_Config函数的

GUI_DEVICE_CreateAndLink(&GUIDRV_Template_API, GUICC_M565, 0, 0) 里面了,

正当想着要如何处理时候,突然想到之前这个内部RAM,这个移植是基于用外部RAM的,会不会就

是RAM内存大小的设置问题,于是想到了GUI_NUMBYTES这个宏,

关于EMWIN移植、enwin调试时候卡GUI_Init的问题关于EMWIN移植、enwin调试时候卡GUI_Init的问题

之前是设置GUI_NUMBYTES为300*1024,那肯定是不行的嘛,在没有加外部RAM的情况下你内部RAM用完

也没有300呀,用的是stm32f103zet6内部只有64k sram,所以果断把GUI_NUMBYTES改小试下,

改为了30*1024,编译下载,

触摸校准屏幕,然后,界面出来了,程序运行流畅了,emwin移植宣告成功~

所以说遇到问题时不要慌张,要一步步慢慢调试,问题自然而然的就会得到解决。