日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ZYNQ UARTLite接收不定长数据

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

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

1. Vivado建立UARTLite的IP核工程

(不做介紹,過程略)

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

(不做介紹,過程略)

3. 添加UARTLite官方例程xuartlite_intr_example

(不做介紹,過程略)

4. 編譯、燒寫,驗證硬件是否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中,
這個函數(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ù)本尊了。

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

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

第一部分,判斷接收緩存剩余要接收的字節(jié)數(shù)是否為0(也就是是否接收到指定字節(jié)長度的數(shù)據(jù))。
如果還沒有達(dá)到指定長度,會跳到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ù),我們可以增加一個接收標(biāo)志的置位,

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

總結(jié)

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

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