2021-09-09 22:25:10 索煒達(dá)電子 823
項(xiàng)目編號:E972
文件大?。?8M
源碼說明:帶中文注釋
開發(fā)環(huán)境:C編譯器
簡要概述:
1.源程序是使用429例程當(dāng)中的內(nèi)存管理實(shí)驗(yàn),首先移植了enwin裸機(jī),按照pdf的方法移植下來,下載演示,出了問題,觸摸屏抖動(dòng)的情況,好在教程里提到了這個(gè)問題,降低rgb的像素時(shí)鐘,但是沒說具體位置 搜索下LTDC_Init函數(shù),然后根據(jù)屏的id選擇不同的配置,我的是lcdid==0X7016 LTDC_Clk_Set(300,2,RCC_PLLSAIDIVR_4);//設(shè)置像素時(shí)鐘 45Mhz
2.在此基礎(chǔ)上移植lwip裸機(jī),原來移植過一次,沒有成功,原因在于對lwip管理機(jī)制的不熟悉,經(jīng)過一段時(shí)間的學(xué)習(xí),今天順利移植。
按照教程移植完lwip的裸機(jī)程序后,需要修改以下幾個(gè)方面:
1)lan8720的復(fù)位引腳在iic的擴(kuò)展io芯片上,要添加驅(qū)動(dòng)程序,剛開始我沒加,結(jié)果初始化完成,網(wǎng)口的led都不亮,是因?yàn)榫W(wǎng)卡沒初始化。
2)lwip內(nèi)核有很多周期性定時(shí)器,相應(yīng)的很多定時(shí)器函數(shù)需要被調(diào)用,所以在無操作系統(tǒng)的情況下,需要使用定時(shí)器為lwip內(nèi)核提供時(shí)鐘。lwip裸機(jī)例程當(dāng)中使用的定時(shí)器3,而在enwin的例程中,定時(shí)器3已經(jīng)被用作emwin的事務(wù)處理 了,定時(shí)器4被用來刷屏了,所以我就使用定時(shí)器5來作為lwip的時(shí)鐘。在中斷函數(shù)當(dāng)中只需要把 lwip_localtime +=10; //加10
3)然后就是在主函數(shù)中調(diào)用lwip_periodic_handle(); //LWIP內(nèi)核需要定時(shí)處理的函數(shù)
把它放到GUIDEMO_Main()函數(shù)下_Main函數(shù)下就ok了
4)這時(shí)下載程序,會(huì)看到lwip初始化不成功,最終原因是HAL_ETH_Init(D_Handler)失敗 原因可能是超時(shí) 修改下stm32f4xx_hal_eth.c中的兩個(gè)宏 LINKED_STATE_TIMEOUT_VALUE AUTONEGO_COMPLETED_TIMEOUT_VALUE改大一些,我是直接加了個(gè)0,下載進(jìn)去,初始化成功,ping ok
帶操作系統(tǒng)的移植,我是在無操作系統(tǒng)的基礎(chǔ)上,一點(diǎn)一點(diǎn)按照教程來的,很麻煩,而且容易出錯(cuò),以后再移植直接復(fù)制已經(jīng)修改好的emwin、lwip文件夾,然后添加工程即可
移植完成下載進(jìn)去會(huì)遇到lwip初始化失敗的問題,原因是內(nèi)存分配失敗,把malloc所管理的內(nèi)存改大一些就ok
目錄│文件列表:
│ emwin lwip ucosIII.zip
│ emwin lwip無操作系統(tǒng)移植.zip
└ 不繞彎路,獲取海量資源.jpg