USB數(shù)據(jù)通信接□模塊的程序設(shè)計
以USHORT ReadlnterruptRegister(void)函數(shù)為例,代碼如下:
3 中斷服務程序
這部分代碼處理由PDIUSBDl2產(chǎn)生的中斷,它將數(shù)據(jù)從PDIUSBDI2的內(nèi)部FIFO取回到CPU存儲器,并建立正 確的事件標志以通知主循環(huán)程序進行處理。在ISR函數(shù)的入口固件使用ReadlntemJptRegister()來決定中 斷源,根據(jù)中斷源進入相應的子程序進行處理。
中斷服務處理函數(shù)代碼如下
4.主端點操作
這部分代碼較多,包括各個端口的發(fā)送/接收函數(shù),端點1和主端點(端點2)的收發(fā)函數(shù)相對較簡單。
?。?)主端點接收函數(shù)。
5.程序說明
在端點0的發(fā)送函數(shù)中,MCU首先需要通過讀DI2的最后處理狀態(tài)寄存器,清0Control_In中斷標志位,接著 MCU在確認DI2處于傳輸模式后進行數(shù)據(jù)所的發(fā)送。由于D12的控件端點只有16bit,如果傳輸?shù)拈L度大于 16bit,MCU在傳輸階段就必須控制數(shù)據(jù)的數(shù)量,其流程如圖2所示。MCU必須檢查要發(fā)送到主機的當前和剩余 的數(shù)據(jù)大小,如果剩下的字節(jié)數(shù)大于16,MCU將先發(fā)送16字節(jié)并減去參考長度(要求的長度)16。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論