www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] 最近在研究STM32F107VC,由于某個(gè)任務(wù)需要用到UDP,就準(zhǔn)備利用開發(fā)板結(jié)合LWip來實(shí)現(xiàn)該功能,但是在調(diào)試UDP的過程中,遇到了一些問題,在網(wǎng)上查找了半天,終于將基本的功能調(diào)通了。準(zhǔn)備將過程記錄一下,

最近在研究STM32F107VC,由于某個(gè)任務(wù)需要用到UDP,就準(zhǔn)備利用開發(fā)板結(jié)合LWip來實(shí)現(xiàn)該功能,但是在調(diào)試UDP的過程中,遇到了一些問題,在網(wǎng)上查找了半天,終于將基本的功能調(diào)通了。準(zhǔn)備將過程記錄一下,以免日后忘記了。

硬件連接和Lwip的移植就不說了,請(qǐng)參照開發(fā)板給的例程。(我的原則是,能直接用的東西堅(jiān)決不再去研究)微雪的板子給的例程是從官方的程序改的,看起來十分復(fù)雜,而且UDP功能介紹的十分模糊,參考性不強(qiáng)。于是網(wǎng)上找例程自己寫代碼。開始的時(shí)候,參考了網(wǎng)上的一些文章,第一次調(diào)試中關(guān)于UDP的初始化和發(fā)送部分是這樣的:


unsigned char const UDPArr[6] = {"hello!"};

int main(void)

{

struct udp_pcb *Udppcb1;

struct ip_addr ipaddr1;

struct pbuf *p ;

/* Setup STM32 system (clocks, Ethernet, GPIO, NVIC) and STM3210C-EVAL resources */

System_Setup();

/* Initilaize the LwIP satck */ LwIP_Init();


//測(cè)試UDP客戶端發(fā)送數(shù)據(jù)

p = pbuf_alloc( PBUF_RAW , sizeof(UDPArr) , PBUF_RAM );

p->payload = ( void *)(UDPArr);

IP4_ADDR(&ipaddr1 , 192,168,1,11);

udppcb1 = udp_new( );

udp_bind( Udppcb1 , IP_ADDR_ANY , 161 );

udp_connect( Udppcb1 , &ipaddr1 , 161 ) ;

udp_send( Udppcb1 , p );

/* Infinite loop */

while (1)

{

/* Periodic tasks */

System_Periodic_Handle();

}

}


編譯通過,但是利用網(wǎng)絡(luò)調(diào)試工具卻怎么也抓不到發(fā)送的數(shù)據(jù),這函數(shù)的返回值也沒有發(fā)現(xiàn)問題。

網(wǎng)上找的Udp代碼無法實(shí)現(xiàn)發(fā)送的功能,我后來又參考了一些別的文章,將代碼改成了這樣的形式,終于將UDP的發(fā)送與接收實(shí)現(xiàn)了。


int main(void)

{

const u8 UDPArr[6] = {"Hello!"};

struct udp_pcb *Udppcb1;

struct ip_addr ipaddr1;

struct pbuf *p;


/* Setup STM32 system (clocks, Ethernet, GPIO, NVIC) and STM3210C-EVAL resources */

System_Setup();


/* Initilaize the LwIP satck */

LwIP_Init();


//HelloWorld_init();

//httpd_init();

//tftpd_init();


p = pbuf_alloc(PBUF_TRANSPORT,sizeof(UDPArr),PBUF_ROM);

p->payload = (void*)(UDPArr);

IP4_ADDR(&ipaddr1,192,168,0,28);

Udppcb1 = udp_new();

udp_bind(Udppcb1,IP_ADDR_ANY,161);

udp_recv(Udppcb1,UDP_Receive,NULL);

udp_connect(Udppcb1,&ipaddr1,161);

udp_send(Udppcb1,p);

udp_disconnect(Udppcb1);

pbuf_free(p);

while (1)

{

/* Periodic tasks */

System_Periodic_Handle();


}

}


最開始沒調(diào)通的時(shí)候,pbuf_alloc的第一個(gè)參數(shù)是PBUF_RAW,通信無法實(shí)現(xiàn),改成PBUF_TRANSORT就可以了。

接收的函數(shù)如下:


void UDP_Receive(void *arg,struct udp_pcb *upcb,struct pbuf* p,struct ip_addr *addr,u16_t port)

{

struct ip_addr dAddr = *addr;

u16 length;

u8 buf[255];


if(p!=NULL)

{

//udp_sendto(upcb,p,&dAddr,port);

//pbuf_free(p);

Length =p->len; //這里取到的Length即為收到的數(shù)據(jù)長(zhǎng)度

memcpy(buf,p->payload,length); //將收到的報(bào)文拷貝至buf

.....

pbuf_free(p);


}

}


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

華為手表作為一款功能齊全的智能手表,具有多種實(shí)用的功能。本文將對(duì)華為手表的功能進(jìn)行詳細(xì)介紹,幫助用戶更好地了解和使用這款智能手表。

關(guān)鍵字: 華為手表 功能 智能手表

幻響一直以來主推生肖系列產(chǎn)品,作為幻響的明星系列,此次的2017年雞年新款產(chǎn)品不僅在設(shè)計(jì)上亮點(diǎn)頗多,在功能和創(chuàng)意上更是有了新的突破,大家對(duì)這款新產(chǎn)品“小吉”也是充滿了期待,那么幻響小吉以及吉小寶能否像之前的產(chǎn)品一樣再次給...

關(guān)鍵字: 幻響 產(chǎn)品 功能

對(duì)講機(jī),不需要的!RX5的車友圈實(shí)時(shí)位置共享及對(duì)講功能,可以讓我輕松指揮車隊(duì),像王多魚一樣一會(huì)擺成一字形,一會(huì)擺成人字形,甭提多開心!除了大數(shù)據(jù)導(dǎo)航、語音控制、遠(yuǎn)程車控等基礎(chǔ)功能以外,還有酷炫的自駕游旅途服務(wù)、語音游戲、...

關(guān)鍵字: RX5 位置共享 功能

摘要:隨著信息技術(shù)的發(fā)展,以及人工智能、大數(shù)據(jù)等技術(shù)的不斷應(yīng)用,基于智能化設(shè)備的安防管理、綜合管控等系統(tǒng)和平臺(tái)也在越來越多的企業(yè)中建設(shè)和使用,使企業(yè)園區(qū)安防綜合管理能力得到不斷提升?,F(xiàn)結(jié)合海油碼頭對(duì)智能安防的實(shí)際需求,對(duì)...

關(guān)鍵字: 架構(gòu) 功能 成效

摘要:構(gòu)建了車輛搶險(xiǎn)救援的云端解決方案,基于車載網(wǎng)絡(luò)實(shí)現(xiàn)車載各系統(tǒng)數(shù)據(jù)的融合、數(shù)據(jù)算法的靈活調(diào)用,在實(shí)現(xiàn)整車數(shù)據(jù)實(shí)時(shí)監(jiān)測(cè)的同時(shí),新增了故障聯(lián)合分析、基于故障樹的故障診斷以及基于數(shù)據(jù)模型的故障診斷、實(shí)現(xiàn)故障的實(shí)時(shí)響應(yīng)和基于...

關(guān)鍵字: 地鐵列車 搶險(xiǎn)救援 功能

芯片制造的整個(gè)過程包括芯片設(shè)計(jì)、芯片制造、封裝制造、測(cè)試等。芯片制造過程特別復(fù)雜。首先是芯片設(shè)計(jì),根據(jù)設(shè)計(jì)要求,生成“圖案”

關(guān)鍵字: m24lr04e 功能 芯片

三星手機(jī),是三星集團(tuán)研發(fā)的智能手機(jī),三星手機(jī)真正開始風(fēng)靡全球是從A系列開始。A系列最初為折疊手機(jī)系列,最早三星SGH-A188(白色外形)、三星SGH-A288(內(nèi)外雙屏)都是經(jīng)典之作。

關(guān)鍵字: 三星 功能 手機(jī)業(yè)務(wù)

摘要:隨著我國(guó)電力事業(yè)的發(fā)展,電力設(shè)備的技術(shù)越來越先進(jìn)、成熟,新建變電站采用GIS設(shè)備也越來越普遍。GIS刀閘、地刀在操作過程中,需要通過觀察孔觀察其是否正確動(dòng)作,操作是否到位,但在實(shí)際操作中操作人員觀察GIS刀閘、地刀...

關(guān)鍵字: 現(xiàn)狀 工具 功能

摘要:構(gòu)建了車輛搶險(xiǎn)救援的云端解決方案,基于車載網(wǎng)絡(luò)實(shí)現(xiàn)車載各系統(tǒng)數(shù)據(jù)的融合、數(shù)據(jù)算法的靈活調(diào)用,在實(shí)現(xiàn)整車數(shù)據(jù)實(shí)時(shí)監(jiān)測(cè)的同時(shí),新增了故障聯(lián)合分析、基于故障樹的故障診斷以及基于數(shù)據(jù)模型的故障診斷、實(shí)現(xiàn)故障的實(shí)時(shí)響應(yīng)和基于...

關(guān)鍵字: 搶險(xiǎn)救援 設(shè)計(jì) 功能

功率放大器簡(jiǎn)稱功放,可以說是各類音響器材中最大的一個(gè)家族了,其作用主要是將音源器材輸入的較微弱信號(hào)進(jìn)行放大后,產(chǎn)生足夠大的電流去推動(dòng)揚(yáng)聲器進(jìn)行聲音的重放。由于考慮功率、阻抗、失真、動(dòng)態(tài)以及不同的使用范圍和控制調(diào)節(jié)功能,不...

關(guān)鍵字: 功放的作用 功能
關(guān)閉