freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

官方usb程序和例程-資料下載頁

2025-07-07 13:35本頁面
  

【正文】 else if (ControlState == WAIT_STATUS_IN){if ((pInformationUSBbRequest == SET_ADDRESS) amp。amp。(Type_Recipient==(STANDARD_REQUEST|DEVICE_RECIPIENT))){SetDeviceAddress(pInformationUSBwValue0)。pUser_Standard_RequestsUser_SetDeviceAddress()。 //這個函數(shù)就一個賦值語句,bDeviceState = ADDRESSED。 }(*pPropertyProcess_Status_IN)()。 //這是一個空函數(shù)。ControlState = STALLED。}執(zhí)行設(shè)置地址操作、采用新地址后,把設(shè)備的狀態(tài)改為STALLED。而在處理的出口中調(diào)用Post0_Process()函數(shù),這個所做的工作是:SetEPRxCount(ENDP0, )。//將端點0的緩沖區(qū)大小設(shè)置為64字節(jié)if (pInformationControlState == STALLED){vSetEPRxStatus(EP_RX_STALL)。vSetEPTxStatus(EP_TX_STALL)。}將端點0的發(fā)送和接收都設(shè)置為:STALL,這種狀態(tài)下只接受SETUP令牌包。枚舉第三步:從新地址獲取設(shè)備描述符(1)上一階段末尾的狀態(tài)端點0的發(fā)送和接收都設(shè)置為:STALL,只接收SETUP令牌包。(2)建立階段:主機(jī)發(fā)令牌包、數(shù)據(jù)包、設(shè)備ACK產(chǎn)生數(shù)據(jù)接收中斷,且端點0的SETUP置位,調(diào)用Setup0_Process()函數(shù)進(jìn)行處理。在Setup0_Process()中,因為主機(jī)發(fā)送了請求數(shù)據(jù)8個字節(jié)。由調(diào)用Data_Setup0()函數(shù)進(jìn)行處理。首先是獲取設(shè)備描述符的長度,描述符的起始地址,傳送的最大字節(jié)數(shù),根據(jù)這些參數(shù)確定本次能夠傳輸?shù)淖止?jié)數(shù),然后調(diào)用DataStageIn()函數(shù)進(jìn)行實際的數(shù)據(jù)傳輸操作,設(shè)備描述符必須在本次中斷中就寫入發(fā)送緩沖區(qū),因為很快就要進(jìn)入數(shù)據(jù)階段了。在函數(shù)處理的最后:vSetEPTxStatus(EP_TX_VALID)。USB_StatusOut()。/* 本來期待IN令牌包,但用戶可以取消數(shù)據(jù)階段,一般不會用到 */(3)數(shù)據(jù)階段:主機(jī)發(fā)IN包,設(shè)備返回數(shù)據(jù),主機(jī)ACK本次操作會產(chǎn)生數(shù)據(jù)發(fā)送完成中斷,由In0_Process(void)來處理中斷,它也調(diào)用DataStageIn()函數(shù)來進(jìn)行處理。如果數(shù)據(jù)已經(jīng)發(fā)送完:ControlState = WAIT_STATUS_OUT。vSetEPTxStatus(EP_TX_STALL)。//轉(zhuǎn)入狀態(tài)階段。有可能的話:Send0LengthData()。ControlState = LAST_IN_DATA。Data_Mul_MaxPacketSize = FALSE。 //這一次發(fā)送0個字節(jié),狀態(tài)轉(zhuǎn)為最后輸入階段。否則,繼續(xù)準(zhǔn)備數(shù)據(jù),調(diào)整剩余字節(jié)數(shù)、發(fā)送指針位置,等待主機(jī)的下一個IN令牌包。(4)狀態(tài)階段:主機(jī)發(fā)OUT包、0字節(jié)包,設(shè)備ACK數(shù)據(jù)發(fā)送完成中斷,調(diào)用Out0_Process(void)函數(shù)進(jìn)行處理,由于在數(shù)據(jù)階段的末尾已經(jīng)設(shè)置設(shè)備狀態(tài)為:WAIT_STATUS_OUT,所以處理函數(shù)基本上沒有做什么事,就退出了。并將狀態(tài)設(shè)為STALLED。對配置描述符、字符串描述符獲取過程進(jìn)行簡單跟蹤,過程就不再一一敘述了。主機(jī)設(shè)置配置。建立階段:主機(jī)發(fā)SETUP包、發(fā)請求數(shù)據(jù)包(DATA0包)、用戶ACK。進(jìn)入CTR中斷,用戶調(diào)用Setup0_Process()函數(shù)進(jìn)行處理,取得請求數(shù)據(jù)后,由于沒有數(shù)據(jù)傳輸階段,該函數(shù)調(diào)用NoData_Setup0()函數(shù)進(jìn)行處理。判斷為設(shè)置配置后,調(diào)用Standard_SetInterface()函數(shù)將設(shè)備狀態(tài)結(jié)構(gòu)體的當(dāng)前配置改為主機(jī)數(shù)據(jù)中的配置參數(shù)。同時調(diào)用用戶的設(shè)置配置函數(shù),將設(shè)備狀態(tài)改為“configured”。退出時,將控制傳輸狀態(tài)改為:ControlState = WAIT_STATUS_IN,進(jìn)入狀態(tài)階段。設(shè)備期待主機(jī)的IN令牌包,返回狀態(tài)數(shù)據(jù)。狀態(tài)階段:主機(jī)發(fā)IN令牌、設(shè)備返回0[size=12p]Setup0_Process()函數(shù)進(jìn)行處理,取得請求數(shù)據(jù)后,由于沒有數(shù)據(jù)傳輸階段,該函數(shù)調(diào)用NoData_Setup0()函數(shù)進(jìn)行處理。設(shè)置空閑時一個類特殊請求,其特征碼為0x21,2表示類請求而不是標(biāo)準(zhǔn)請求,1表示接收對象是接口而不是設(shè)備。USB的底層并不支持類特殊請求,它將調(diào)用上層函數(shù)提供的函數(shù):if (Result != USB_SUCCESS){Result = (*pPropertyClass_NoData_Setup)(RequestNo)。 //這里就是調(diào)用用戶提供的類特殊請求的處理函數(shù)。結(jié)果發(fā)現(xiàn)用戶提供的類特殊請求(針對無數(shù)據(jù)情況)只支持SET_PROTOCOL。針對有數(shù)據(jù)情況只支持:GET_PROTOCOL。if ((Type_Recipient==(CLASS_REQUEST | INTERFACE_RECIPIENT))amp。amp。 (RequestNo == SET_PROTOCOL)){return Joystick_SetProtocol()。}}主機(jī)獲取報告描述符建立階段:主機(jī)發(fā)SETUP包、發(fā)請求數(shù)據(jù)包(DATA0包)、用戶ACK。進(jìn)入CTR中斷,獲取描述符是一個標(biāo)準(zhǔn)請求,但是報告描述符并不是需要通用實現(xiàn)的,所以在底層函數(shù)中沒有實現(xiàn)。跟蹤Setup0_Process(void)——進(jìn)入Data_Setup(void)函數(shù),它是這么處理的:if (Request_No == GET_DESCRIPTOR){if(Type_Recipient==(STANDARD_REQUEST| EVICE_RECIPIENT)){u8 wValue1 = pInformationUSBwValue1。if (wValue1 == DEVICE_DESCRIPTOR){CopyRoutine = pPropertyGetDeviceDescriptor。}else if (wValue1 == CONFIG_DESCRIPTOR){CopyRoutine = pPropertyGetConfigDescriptor。}else if (wValue1 == STRING_DESCRIPTOR){CopyRoutine = pPropertyGetStringDescriptor。}/* End of GET_DESCRIPTOR */}}可見核心函數(shù)只支持設(shè)備描述符、配置描述符以及字符串描述符。最終該函數(shù)將調(diào)用:Result= (*pPropertyClass_Data_Setup)(pInformationUSBbRequest)。調(diào)用用戶的類特殊實現(xiàn)來獲取報告描述符,同時HID類描述符也是通過這種方式取得的。主機(jī)從中斷端點讀取鼠標(biāo)操作數(shù)據(jù)主機(jī)會輪詢設(shè)備,設(shè)備數(shù)據(jù)的準(zhǔn)備在主函數(shù)中,用Joystick_Send(JoyState())函數(shù)來實現(xiàn)。Mouse_Buffer[1] = X。Mouse_Buffer[2] = Y。/*copy mouse position info in ENDP1 Tx Packet Memory Area*/UserToPMABufferCopy(Mouse_Buffer, GetEPTxAddr(ENDP1), 4)。/* enable endpoint for transmission */SetEPTxValid(ENDP1)。使能端點1的發(fā)送,當(dāng)主機(jī)的IN令牌包來的時候,SIE將數(shù)據(jù)返回給主機(jī)。同時產(chǎn)生 CTR中斷。在中斷處理程序中,執(zhí)行下列代碼:if ((wEPVal amp。 EP_CTR_TX) != 0){/* clear int flag */_ClearEP_CTR_TX(EPindex)。(*pEpInt_IN[EPindex1])()。} /* if((wEPVal amp。 EP_CTR_TX) != 0) */這是在函數(shù)指針數(shù)組中調(diào)用函數(shù),跟蹤進(jìn)入:發(fā)現(xiàn)這個函數(shù)什么也沒有做。經(jīng)過對程序執(zhí)行過程的跟蹤和分析,我現(xiàn)在對USB設(shè)備HID類的工作有了大概的了解,對ST的USB庫的工作也有了初步的概念。把所有文件的源代碼粗略地瀏覽了一遍,心里大概有了些底。但現(xiàn)在我還不準(zhǔn)備閱讀源代碼,我先把例程在智林開發(fā)板上移植好,再詳細(xì)的閱讀一遍源代碼。歡迎您的光臨,!希望您提出您寶貴的意見,你的意見是我進(jìn)步的動力。贈語; 如果我們做與不做都會有人笑,如果做不好與做得好還會有人笑,那么我們索性就做得更好,來給人笑吧! 現(xiàn)在你不玩命的學(xué),以后命玩你。我不知道年少輕狂,我只知道勝者為王。不要做金錢、權(quán)利的奴隸;應(yīng)學(xué)會做“金錢、權(quán)利”的主人。什么時候離光明最近?那就是你覺得黑暗太黑的時候。最值得欣賞的風(fēng)景,是自己奮斗的足跡。壓力不是有人比你努力,而是那些比你牛幾倍的人依然比你努力。學(xué)習(xí)參考
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1