




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、前段時間做項目用到百兆網(wǎng)通信,用到了LWIP,一開始是參照原子的例程做移植,因為原子的例程中使用的是LAN8720,為了改成DP83848,改寄存器地址,改位定義,改速度計算公式,折騰了好多天也沒成功,最后只好聽從網(wǎng)友的建議,修改ST官方的一個例程,幾天下來,竟然成功了,現(xiàn)在將步驟分享給大家,感覺實際工程中用DP83848的還是大多數(shù).其實本文并不是移植LWIP,只是將ST官方的例程改成我們項目所需要的,然后我們再在這個基礎上完成自己的項目即可,這對新接觸LWIP又急著做項目的人比較適合,沒必要去了解LWIP的具體實現(xiàn),會用就行了.本文作者:武漢普創(chuàng)科技易宇轉載請注明出處本人的項目配置:STM
2、32F407VET6 + DP83848C1、從官方網(wǎng)站/document/list/index/category-523下載STSW-STM32070 面向STM32F4x7微控制器的LwIP TCP/IP協(xié)議棧的演示代碼 的英文文檔DM00036052.pdf和軟件包stsw-stm32070.zip。stsw-stm32070.zip是面向STM32F4x7微控制器的LwIP TCP/IP協(xié)議棧的基于官方EVAL開發(fā)板的演示代碼,顯然,我們直接修改這個演示代碼要比我們?nèi)ヒ浦睱WIP簡單得多。DM00036052.pdf是演示代碼的說明文檔。2、將st
3、sw-stm32070.zip解壓得到STM32F4x7_ETH_LwIP_V1.1.0文件夾,下面是STM32F4x7_ETH_LwIP_V1.1.0文件夾架構3、刪除_htmresc文件夾,這個文件夾是ST及CMSIS公司logo,沒什么用。4、打開project文件夾,這個文件夾包括兩個文件夾:FreeRTOS和Standalone。FreeRTOS文件夾里的程序示例是基于FreeRTOS系統(tǒng)的LWIP移植示例,這里我們不需要,直接刪除。Standalone文件夾里是一些無操作系統(tǒng)LWIP移植示例程序,在這里我們工程需要的是普通的數(shù)據(jù)傳輸,所以只使用到UDP,所以我們只保留udp_ech
4、o_client文件夾,其他的都刪除掉。在udp_echo_client文件夾中EWARM文件夾是IAR EWARM建立的工程,MDK-ARM是keil MDK建立的工程。在這里我們選擇MDK工程,IAR建立的工程可以保留也可以刪除。還有一個文件夾RIDE,打開看了看,應該是用另一款編譯軟件建立的工程空間,這里我們不需要,直接刪除。5、Utilities->Third_Party文件夾下面有三個文件夾FatFs_vR0、FreeRTOSV7.3 、lwip-1.4.1。FatFs_vR0一個通用的文件系統(tǒng)模塊,用于在小型嵌入式系統(tǒng)中實現(xiàn)FAT文件系統(tǒng),F(xiàn)reeRTOSV7.3一個迷你操作
5、系統(tǒng)內(nèi)核的小型嵌入式系統(tǒng),在這里我們都用不上,直接刪除。lwip-1.4.1文件夾是LWIP源碼,是我們所需要的。6、打開MDK-ARM文件夾里面的MDK工程,我們先編譯一下,可以看到有0個錯誤,三個警告,其中兩個警告是定義了變量但是沒有使用,我們不去管它,另一個警告是.UtilitiesThird_Partylwip-1.4.1portSTM32F4x7Standaloneethernetif.c(366): warning: #1-D: last line of file ends without a newline 提示ethernetif.c文件的最后一行(也就是366行)沒有換行,M
6、DK里面每個文件的最后一行必須換行,不然會提示一個警告,這里把366行后面換行再編譯,這個警告就消失了。7、打開 main.h 文件,因為我們電路板上使用的是RMII接口,所以將#define MII_MOD注釋掉,將/#define RMII_MODE取消注釋,如下圖所示:在這里要注意RMII的時鐘為50MHz,在電路板上直接焊接一個50MHz的有源晶振就可以了。取消/#define USE_DHCP的注釋,啟用動態(tài)地址分配,當?shù)刂贩峙洳怀晒t使用靜態(tài)IP地址。如圖:注釋掉或刪除 USE_LCD和serial_debug,本項目沒有用到這兩項,如下圖: 本項目中直接刪除掉,因為刪除掉了SER
7、IAL_DEBUG,所以我們可以將serial_debug.c文件從項目中移除。點擊紅色的叉號刪除serial_debug.c,然后點擊OK就可以了。將Groups欄STM324xG_EVAL中的stm324x7i_eval.c和stm324x7i_eval_lcd.c刪除,將MDK_ARM中的啟動文件startup_stm32f427x.s刪除,將Project Targets分欄中的項目名STM324x7I_EVAL刪除,將STM324xG_EVAL中的stm324xg_eval_lcd.c刪除,這都是和本項目無關的東西。這時候編譯會提示錯誤,我們將stm32f4x7_eth_bsp.h文
8、件里關于包含LCD函數(shù)的頭文件刪除,如下圖。將stm32f4x7_eth_bsp.c文件里面關于LCD的部分刪除掉,如下圖,將這些行刪除。將netconf.c中141-148行關于LCD的函數(shù)刪掉 /* Set the LCD Text Color */ LCD_SetTextColor(Red); /* Display message on the LCD */ LCD_DisplayStringLine(Line5, (uint8_t*)" Network Cable is "); LCD_DisplayStringLine(Line6, (uint8_t*)"
9、; not connected "); /* Set the LCD Text Color */ LCD_SetTextColor(White);再編譯就沒有問題了。8、按電路圖修改時鐘,修改 stm32f4xx.h中宏定義標識符HSE_VALUE 的值為我們的外部時鐘20MHz設置主 PLL 時鐘, 在 System_stm32f4xx.c 文件開頭的地方配置所以我們的主 PLL 時鐘為: PLL = 20MHz * N/ (M*P) = 20MHz* 336 /(20*2) = 168MHzSystemInit()函數(shù)中設置的系統(tǒng)時鐘大?。篠YSCLK(系統(tǒng)時鐘) = 168MH
10、zAHB 總線時鐘 (HCLK=SYSCLK) = 168MHzAPB1 總線時鐘 (PCLK1=SYSCLK/4) = 42MHzAPB2 總線時鐘 (PCLK2=SYSCLK/2) = 84MHzPLL 主時鐘 = 168MHz9、這個例程默認的是STM324xG_EVAL開發(fā)板,它使用的主芯片是STM32F407IG,而我們項目所使用的主芯片是STM32F407VE,要更改芯片配置。點擊彈出如下窗口選擇 Device 將下面的主芯片改為10、下面我們進入main.c函數(shù)看一下程序:首先的注釋是說明系統(tǒng)時鐘已經(jīng)配置完成,如果修改的話可以參考第8條。接下來就是配置中斷優(yōu)先級分組NVIC_Pr
11、iorityGroupConfig,這個很重要,只要定義了中斷,就必須配置中斷優(yōu)先級分組,這個函數(shù)在系統(tǒng)中只能被調(diào)用一次,一旦分組確定就最好不要更改。這里分配的是組4,4位搶占優(yōu)先級, 0位響應優(yōu)先級。接下來的是條件編譯和LCD初始化,在前面我們已經(jīng)刪除SERIAL_DEBUG 串口調(diào)試和LCD頭文件,這里我們直接將這段程序刪除。如下圖,將這幾行代碼刪除掉。刪除mian.c下面關于LCD的信息: 刪除128行以后的所有數(shù)據(jù)。打開stm324xg_eval.h,注釋掉第39行#include "stm32_eval_legacy.h",這個頭文件是關于開發(fā)板上LCD及按鍵的聲
12、明,本項目中沒有用到LCD和按鍵。 打開stm32f4x7_eth_bsp.c文件,刪除關于LCD的一些程序,刪除447行至472行的程序和485行到495行的程序,這里的程序是在LCD屏上顯示一些語句及本機的IP。刪除如下圖所示程序。打開netconf.c文件,刪除關于LCD的程序,刪除第219至223行程序,刪除239至255行程序,刪除274至290行程序。這是關于LCD顯示分配動態(tài)IP的信息的程序。11、下面是stm32f4x7_eth_bsp.c ; 配置以太網(wǎng) (GPIOs, clocks, MAC, DMA),對于GPIO的配置,我們選用的是RMII接口,而且芯片是STM32F4
13、07VE,和STM324xG_EVAL開發(fā)板上有些引腳定義有些差別,所以我們要對網(wǎng)口的GPIO接口修改:修改結果如上圖所示 , 注意以太網(wǎng)配置那段注釋里面,雙斜線的是我們RMII沒有用到的引腳,還有就是要將PG11/PG13/PG14修改為PB11/PB12/PB13。12、接下來就是修改關于LED和按鍵的程序了,刪除netconf.c里面第179行、第234行和252行,有些行數(shù)可能不對,但代碼不會變,找到相應代碼并修改將stm324xg_eval.c文件除了#include "stm324xg_eval.h"其他全部刪除,如圖所示將stm324xg_eval.h文件除了
14、下圖所示程序其他全部刪除:我們項目電路板上所用到的功能就可以在這兩個文件夾定義和聲明了。13、 在官方UDP客戶端這個例程中是利用按鍵中斷來發(fā)送數(shù)據(jù)包的,本人開發(fā)的項目是當收到下位機的數(shù)據(jù)后就將數(shù)據(jù)轉發(fā)給PC,所以在這里用不到按鍵中斷。之前我們刪除了LCD_LED_BUTTON_Init();這個函數(shù),這個函數(shù)就是配置LED、LCD以及按鍵初始化及按鍵中斷的函數(shù)。所以在這里這個按鍵中斷已經(jīng)沒有作用了,我們可以將UDP客戶端發(fā)送數(shù)據(jù)包的函數(shù)直接復制到主函數(shù)中,然后將按鍵中斷函數(shù)清空。按鍵中斷函數(shù)在stm32f4xx_it.c函數(shù)中,如下圖,將udp_echoclient_connect();復制到主函數(shù)中以便使用,等我們改寫主函數(shù)時會用到這個函數(shù)。這個函數(shù)是基于EVAL開發(fā)板寫的一個數(shù)據(jù)收發(fā)函數(shù),我們自己實現(xiàn)收發(fā)功能都可以參照這個函數(shù)來寫 , 復制完之后直接將這個中斷函數(shù)內(nèi)容清空就可以了。在main.c中還要添加udp_echoclient_connect()函數(shù)所在文件對應的頭文件#include "udp_echoclient.h"。14、 至此,編譯下載,修
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單項臨時勞務合同范本
- 加盟養(yǎng)生店合同范本
- 科技展會上電影營銷報告的創(chuàng)意呈現(xiàn)
- 科技新潮物聯(lián)網(wǎng)在創(chuàng)新型供應鏈中的應用
- 胸部腫瘤的護理
- 科技如何改變醫(yī)療產(chǎn)業(yè)格局
- 科技企業(yè)如何運用知識付費提升品牌影響力
- 科技與傳統(tǒng)的碰撞智能酒店空間設計展望
- 知識產(chǎn)權助力產(chǎn)品開發(fā)推動企業(yè)創(chuàng)新發(fā)展
- 科技創(chuàng)新驅(qū)動下的生態(tài)產(chǎn)業(yè)園區(qū)發(fā)展路徑研究
- 2023年新安全生產(chǎn)法
- 卡通可愛風格學生課程表模板
- 英語四線三格A4空白紙
- 分娩舍母豬分娩管理
- GB/T 9119-2010板式平焊鋼制管法蘭
- UNIX操作系統(tǒng)基礎(全)
- 《塔臺競標標書》設計單
- 第一講-俄語入門(課堂)課件
- 《計算機組裝與維護》第十章BIOS與CMOS
- 許曉峰版電機拖動電子教案(全)課件
- 鋼鐵冶金學(煉鋼學)課件
評論
0/150
提交評論