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