日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]//=====================================================================//TITLE:// STM32F207核心版的LwIP例程的心得//AUTHOR:// norains//DATE:// Friday 01-July-2011//Environment:// Keil MDK 4.2// STM32F2

//=====================================================================
//TITLE:
// STM32F207核心版的LwIP例程的心得
//AUTHOR:
// norains
//DATE:
// Friday 01-July-2011
//Environment:
// Keil MDK 4.2
// STM32F207
//=====================================================================

最近拿了片STM32F207的核心版,上面有以太網(wǎng)的芯片,可以聯(lián)網(wǎng);而之前所工作的領(lǐng)域均沒有涉及網(wǎng)絡(luò)方面,所以在使用上遇上了不少麻煩,特別是例程也沒有很正常跑起來。以下的記錄,均是在調(diào)試?yán)虝r的一些記錄,有點(diǎn)支離破碎不成體系,各位讀者權(quán)當(dāng)筆記來看好了。


1. IP地址

例程默認(rèn)的是采用自動分配IP地址的DHCP方式。如果大家的路由器無法查看到主機(jī)列表的話,那么這個分配方式就會比如郁悶。因?yàn)閮H僅是使用核心版,是無法知道當(dāng)前的IP地址的,除非你接了LCD來進(jìn)行顯示。

如果要更改其分配方式,可以打開lwipopts.h文件,將LWIP_DHCP的宏定義更改為0,如:


/*----------DHCPoptions----------*/

/*DefineLWIP_DHCPto1ifyouwantDHCPconfigurationof

interfaces.DHCPisnotimplementedinlwIP0.5.1,however,so

turningthisondoescurrentlynotwork.*/

#defineLWIP_DHCP0



將LWIP_DHCP設(shè)置為0后,就需要手動設(shè)置IP地址了。相應(yīng)的數(shù)值,可以查看netconf.c文件,如:


IP4_ADDR(&ipaddr,192,168,0,8);

IP4_ADDR(&netmask,255,255,255,0);

IP4_ADDR(&gw,192,168,0,1);



這里將IP地址設(shè)置為192.168.0.8,掩碼為255.255.255.0,網(wǎng)關(guān)則是192.168.0.1。如果各位對這些地址有所異議,也可以手動修改。

在這里順便再說一下主機(jī)的IP地址設(shè)定。大家都知道,如果局域網(wǎng)的網(wǎng)段不一樣的話,是無法通信的;而又由于某些原因,使得主機(jī)的IP地址不能和開發(fā)板處于同一網(wǎng)段。遇到這種情形,直接修改核心版的IP地址自然是可以的,但我們還可以采用另外一種方法。

首先TCP/IP屬性中,我們固定一個IP地址,如圖:


點(diǎn)擊"高級",可以添加多個IP地址,如圖:


這樣就能夠和核心版同一網(wǎng)段,也能夠正常通信了。


2. RMII

所拿到的核心是STM32F107和STM32F207共用的,但因?yàn)橐_問題,使用STM32F207是不能使用MII,必須采用RMII。如果要更改這個模式,必須打開stm32f2x7.c文件,將MII_MODE宏去掉,并且定義相應(yīng)的RMII_MODE,如:


#defineRMII_MODE//RMIImodeforSTM3220F-EVALBoard(MB786)(checkjumperssetting)

//forRMIImodeyouhavetosetthesystemclockfrequencyto100MHz

//youcandothisinsystem_stm32f2xx.cfile

//#defineMII_MODE/*MIImodeforSTM3220F-EVALBoard(MB786)(checkjumperssetting)*/



如果這里執(zhí)意使用的是MII_MODE會是什么結(jié)果呢?結(jié)果便是無法跳出該循環(huán)語句:


/*Waitforsoftwarereset*/

while(ETH_GetSoftwareResetStatus()==SET);



因?yàn)闀z測到一直是SET狀態(tài),沒有RESET,代碼會一直循環(huán)。


3. PLL_N

如果使用了RMII模式,那么必須要將system_stm32f2xx.c的PLL_N定義由原來的240更改為200,如:
#define PLL_N 200 //norains:If you want to use RMII,it must set 200 here.Others you could set 240

假如不進(jìn)行更改的話,那么下面這段main.cpp文件的main函數(shù)循環(huán)代碼會出問題:


while(ETH_GetRxPktSize()!=0)

{

LwIP_Pkt_Handle();

}



簡單點(diǎn)來說,是ETH_GetRxPktSize函數(shù)永遠(yuǎn)返回為0,無法接收到數(shù)據(jù)。


4.測試

當(dāng)一切都準(zhǔn)備就緒之后,可以將核心版連接到路由器中,然后在命令行界面輸入ping就能夠檢測到設(shè)備,如圖:


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉