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中會報錯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章