STM32f429 CubeMx LTDC SDRAM emWin 程序进入 硬件错误中断(UsageFault_Handler)

最近网上买了一套野火挑战者STM32F429开发板,配的是800X480的电容屏,尝试emWin开发。拿到板后我先从官方提供的例程中选了几个试了一下,感觉确实用emWin做人机界面很不错。可惜例程用的是STM的标准库,我一直以来一直在用CubeMx+Keil开发STM32,所以就开始尝试把例程移植到Hal库。先用CubeMx配置SDRAM、LTDC等等,并把驱动一一改为Hal库的程序,逐一测试通过,接下来开始移植emWin。

       我先做了一个“Hollow world”,很顺利的通过了,然后就尝试移植GUIDEMO,程序改完后运行(说说简单,其实我也花了2天时间),发现只能运行第一页,切换到第二页就死机了。我又尝试自己做2个简单页面,结果切换时也会死机,程序触发硬件错误中断(UsageFault_Handler)。于是我就开始反复的百度、试验。网上关于STM32f429 CubeMx emWin的内容真不多,花了好几天毫无进展。于是又将标准库程序和我写的程序中有关SDRAM、LTDC、DMA2D的所有寄存器初始化状态做了对比,发现差异就修改,又足足花了一天时间,做到一模一样,但是问题还是没有解决。

后来无意中发现CubeMx可以直接配置 emWin,于是我又用CubeMx配置emWin,运行一个简单窗体可以正常工作。但是放多一点控件就会死机,和之前一样,更不用说切换窗体了。网上说的方法都试了,就是不行。但是我基本确认是内存分配问题,但是不知错在哪个环节。一连搞了好几天,一事无成!

今天又搞了一下午,又是如此。下班路上又上网查,终于发现了问题。有一篇关于STM32F767的文章中提到要将Stack_Size和Heap_Size改为0x1000,否则会引发硬件错误中断(UsageFault_Handler)。于是回家后打开电脑,架起系统,将这2个值修改后(其实我之前也改过只是没有改这么大),编译、下载、运行,问题解决了!!!

 

于是赶紧登陆,写下这段博文,分享给大家,以免像我一样整整折腾了半个月。

我现在还有个问题没搞明白,用CubeMx配置LTDC只能配置一个图层,如果配置两个,Graphics中会报错。

你可能感兴趣的:(emWin,STM32F429,LTDC,STM32,CUBE)