日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

ZYNQ UARTLite接收不定长数据

發(fā)布時(shí)間:2024/10/14 66 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ZYNQ UARTLite接收不定长数据 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

UARTLite接收不定長數(shù)據(jù)

1. Vivado建立UARTLite的IP核工程

(不做介紹,過程略)

2. 創(chuàng)建SDK或vitis應(yīng)用工程

(不做介紹,過程略)

3. 添加UARTLite官方例程xuartlite_intr_example

(不做介紹,過程略)

4. 編譯、燒寫,驗(yàn)證硬件是否OK

5. 分析官方例程

官方例程xuartlite_intr_example是打開中斷,將發(fā)送引腳與接收引腳短接,如果接收的數(shù)據(jù)長度等于發(fā)送的數(shù)據(jù)長度,且接收數(shù)據(jù)等于發(fā)送數(shù)據(jù),則例程運(yùn)行正常。
例程中沒有給出中斷處理函數(shù),而是給出了將自定義封裝到發(fā)送完成或接收完成中斷的函數(shù)。

尋找XUartLite_SetRecvHandler函數(shù)聲明的位置,在xuartlite_intr.c中,
這個(gè)函數(shù)將用戶函數(shù)送入了結(jié)構(gòu)體中的RecvHandler中,在xuartlite_intr.c中尋找調(diào)用RecvHandler的函數(shù),找到ReceiveDataHandler函數(shù)。

我們再看看誰調(diào)用了ReceiveDataHandler函數(shù),原來是XUartLite_InterruptHandler函數(shù),它應(yīng)該就是xUARTLite的中斷函數(shù)本尊了。

這個(gè)函數(shù)很簡單,就是發(fā)生發(fā)動(dòng)或接收中斷,就調(diào)用對應(yīng)的函數(shù)。接下來我們回到ReceiveDataHandler函數(shù)。

這個(gè)函數(shù)可以分為三部分:

第一部分,判斷接收緩存剩余要接收的字節(jié)數(shù)是否為0(也就是是否接收到指定字節(jié)長度的數(shù)據(jù))。
如果還沒有達(dá)到指定長度,會(huì)跳到XUartLite_ReceiveBuffer函數(shù),接收剩余字節(jié),直到接收FIFO為空。(不管是否接收完畢)。

第二部分,判斷接收數(shù)據(jù)緩存是否為0,如果為零,則調(diào)用用戶自定義的中斷函數(shù)RecvHandler,并將回調(diào)函數(shù)和已經(jīng)接收到的字節(jié)長度發(fā)送到該中斷函數(shù)。

第三部分,記錄中斷次數(shù)。

7. 修改官方源文件xuartlite_intr.c。

經(jīng)過前邊的介紹,我們可以知道只要修改ReceiveDataHandler函數(shù)的第二部分即可實(shí)現(xiàn)不定長數(shù)據(jù)的接收。修改方法為,將剩余字節(jié)數(shù)的判斷去掉,直接執(zhí)行用戶中斷函數(shù)RecvHandler的調(diào)用。

對于例程中給出的自定義函數(shù),我們可以增加一個(gè)接收標(biāo)志的置位,

8. 編譯、燒寫,測試功能。

總結(jié)

以上是生活随笔為你收集整理的ZYNQ UARTLite接收不定长数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。