這篇文章主要為大家展示了“STM32網(wǎng)絡(luò)之中斷的示例分析”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“STM32網(wǎng)絡(luò)之中斷的示例分析”這篇文章吧。
創(chuàng)新互聯(lián)建站作為成都網(wǎng)站建設(shè)公司,專注成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),有關(guān)成都企業(yè)網(wǎng)站建設(shè)方案、改版、費(fèi)用等問題,行業(yè)涉及成都假山制作等多個(gè)領(lǐng)域,已為上千家企業(yè)服務(wù),得到了客戶的尊重與認(rèn)可。

網(wǎng)絡(luò)中斷向量:一個(gè)用于正常的網(wǎng)絡(luò)操作,另一個(gè)當(dāng)它映射到EXIT線路19的時(shí)候,用于以太網(wǎng)喚醒事件(帶有喚醒幀或魔術(shù)數(shù)據(jù)包檢測)
第一個(gè)網(wǎng)絡(luò)中斷保留為MAC和DMA產(chǎn)生的中斷,正如在MAC中斷和DMA中斷部分。
第二個(gè)中斷保留為喚醒事件時(shí)PMT產(chǎn)生的中斷。喚醒事件對EXIT線路19的映射是造成STM32F20X和STM32F21X退出低功耗模式,并且產(chǎn)生中斷。
當(dāng)映射到EXIT線路19的以太網(wǎng)喚醒事件發(fā)生和,MACPMT中斷使能并且有一個(gè)上升沿的EXIT線路19中斷也被使能,他們都能喚醒中斷。
可使用看門狗定時(shí)器(請參見ETH_DMARSWTR 寄存器)靈活控制RS 位(ETH_DMASR寄存器)。當(dāng)此看門狗定時(shí)器使用非零值編程時(shí),看門狗定時(shí)器激活,只要RXDMA完成發(fā)送一個(gè)接收的數(shù)據(jù)幀到系統(tǒng)存儲,在沒有觸發(fā)接收狀態(tài),因?yàn)樗皇鞘鼓艿脑谙鄳?yīng)的接收描述符(RDES1[31])(也就是:未在相應(yīng)接收描述符(RDES1[31])使能接收狀態(tài))。當(dāng)定時(shí)器按照編程值運(yùn)行時(shí),RS位被置1并且中斷發(fā)生,如果ETH_DMAIER寄存器中相應(yīng)位使能。看門狗定時(shí)失效在運(yùn)行前,當(dāng)數(shù)據(jù)幀被發(fā)送到內(nèi)存,并且RS置1,因?yàn)槎〞r(shí)器被使能為描述符。
注意:
讀取PMT 控制和狀態(tài)寄存器會(huì)自動(dòng)將接收的喚醒幀和接收的魔術(shù)數(shù)據(jù)包PMT 中斷標(biāo)志清零。但是,由于用于這些標(biāo)志的寄存器位于 CLK_RX域,因此在固件能發(fā)現(xiàn)此更新前可能有顯著的延遲。當(dāng) RX 時(shí)鐘很慢(在10 Mbit 模式)和當(dāng)AHB 總線為高頻時(shí),該延遲會(huì)特別長。
由于從PMT 到CPU 的中斷請求基于CLK_RX 域中的相同寄存器,所以即使在讀取PMT_CSR 之后,CPU也可能錯(cuò)誤地第二次調(diào)用中斷例程。因此,可能需要固件輪詢接收的喚醒幀和接收的魔術(shù)數(shù)據(jù)包位,并僅在發(fā)現(xiàn)它們都為‘0’時(shí)退出中斷服務(wù)程序。
STM32的網(wǎng)絡(luò)中斷,其實(shí)準(zhǔn)確來說應(yīng)該是網(wǎng)絡(luò)專用的DMA的中斷,網(wǎng)絡(luò)中的數(shù)據(jù)包符合1518規(guī)則,也就是說是1460字節(jié),MAC接收的數(shù)據(jù)包是2K字節(jié),網(wǎng)絡(luò)上每一個(gè)數(shù)據(jù)包MAC接收完都會(huì)產(chǎn)生中斷。
官方代碼是這樣的

明顯是使用查詢的方式,沒有使用到中斷。
中斷的使用方式如下:
配置網(wǎng)絡(luò)中斷

注釋掉官方提供的查詢部分的代碼。

我們使用中斷形式之后,代碼是

這樣的代碼,我們在接收小于一個(gè)DMA描述符數(shù)據(jù)大小的數(shù)據(jù)沒有問題,很流暢。
在接收大量數(shù)據(jù)的時(shí)候就會(huì)出現(xiàn)錯(cuò)誤,接收的會(huì)緩慢,接收的過多會(huì)死機(jī)
解決辦法是:
把if修改成while

這樣就把整個(gè)數(shù)據(jù)包接收完之后再跳出中斷,這樣就解決了這個(gè)問題。
以上是“STM32網(wǎng)絡(luò)之中斷的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
本文名稱:STM32網(wǎng)絡(luò)之中斷的示例分析
文章分享:http://www.chinadenli.net/article48/pgcdhp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、全網(wǎng)營銷推廣、網(wǎng)站排名、網(wǎng)站導(dǎo)航、網(wǎng)站營銷、ChatGPT
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)