本人此次基于正点的战舰STM32F103ZET6开发板,使用外部SRAM给emWin分配内存空间,最开始分配的是60K的内存空间,外部SRAM的内存是1M字节。首先测试外部SRAM是可以使用的,然后下载程序后,直接死机。错误提示如下图所示:
其中,SRAM的初始化用的是INIT_ENV_EXPORT(SRAM_FSMC_Init);进行初始化的。在SRAM_FSMC_Init()最后用的是rt_memheap_init(&system_heap, “sram”, (void *)Bank1_SRAM3_ADDR, SRAM_SIZE);进行内存管理,且
在GUIConf.c文件中,修改GUI_X_Config()函数如下所示:
如果GUI_NUMBYTES是60K,那么程序就会死在函数_Init(GUI_DEVICE * pDevice)中,错误提示如上图所示;如果GUI_NUMBYTES是30K,那么程序编译通过,但是不会显示字符。显示程序如下图所示:
结果显示图如下图所示:
通过结果图,可以看出,GUI_SetBkColor(GUI_RED);这一行代码是执行成功的,全屏被刷新为红色。但是在屏幕上我们可以看到有一条竖直的蓝色线条,如果我将GUI_DispString(“www.armfly.com \navailable”);代码屏蔽掉,那么线条就会消失;如果不屏蔽,线条就会出现。而且即便我从CPU内部将30K空间分配给emWin,结果也是一样的。
后来多次测试也发现,只要有字符串/字符的显示,都会在不同位置出现不同长短的线条。
所以,我的问题就是第一:为什么1M的外部SRAM,我分配60K空间给emWin就会死机,但是30K却不会?
第二:为什么当有文本内容显示的时候,都会显示成不一样的线条?
可借鉴一下嘛?