📄 usb_int.txt
字号:
00003c 0300 LSLS r0,r0,#12 ;58
00003e 8038 STRH r0,[r7,#0] ;58
000040 6820 LDR r0,[r4,#0] ;59
000042 f3c01001 UBFX r0,r0,#4,#2 ;59
000046 ea4f1000 LSL r0,r0,#4 ;59
00004a 8078 STRH r0,[r7,#2] ;59
00004c 6820 LDR r0,[r4,#0] ;60
00004e b280 UXTH r0,r0 ;60
000050 ea000008 AND r0,r0,r8 ;60
000054 f4805000 EOR r0,r0,#0x2000 ;60
000058 6020 STR r0,[r4,#0] ;60
00005a 6820 LDR r0,[r4,#0] ;61
00005c b280 UXTH r0,r0 ;61
00005e ea000009 AND r0,r0,r9 ;61
000062 f0800020 EOR r0,r0,#0x20 ;61
000066 6020 STR r0,[r4,#0] ;61
000068 8808 LDRH r0,[r1,#0] ;66 ; wIstr
00006a f5a46440 SUB r4,r4,#0xc00 ;61
00006e 06c0 LSLS r0,r0,#27 ;66
000070 d504 BPL |L2.124|
000072 f8d40c00 LDR r0,[r4,#0xc00] ;89
000076 b280 UXTH r0,r0 ;89
000078 0601 LSLS r1,r0,#24 ;90
00007a d51f BPL |L2.188|
|L2.124|
00007c f8d40c00 LDR r0,[r4,#0xc00] ;74
000080 b280 UXTH r0,r0 ;74
000082 ea00000b AND r0,r0,r11 ;74
000086 f8c40c00 STR r0,[r4,#0xc00] ;74
00008a f7fffffe BL In0_Process
00008e e02c B |L2.234|
|L2.144|
000090 0489 LSLS r1,r1,#18 ;78
000092 d501 BPL |L2.152|
000094 f4805000 EOR r0,r0,#0x2000 ;78
|L2.152|
;;;102 Setup0_Process();
;;;103 /* before terminate set Tx & Rx status */
;;;104 _SetEPRxStatus(ENDP0, SaveRState);
;;;105 _SetEPTxStatus(ENDP0, SaveTState);
;;;106 return;
;;;107 }
;;;108
;;;109 else if ((wEPVal & EP_CTR_RX) != 0)
;;;110 {
;;;111 _ClearEP_CTR_RX(ENDP0);
;;;112 Out0_Process();
;;;113 /* before terminate set Tx & Rx status */
;;;114 _SetEPRxStatus(ENDP0, SaveRState);
000098 f8c40c00 STR r0,[r4,#0xc00]
;;;115 _SetEPTxStatus(ENDP0, SaveTState);
00009c f8d40c00 LDR r0,[r4,#0xc00]
0000a0 8879 LDRH r1,[r7,#2] ; SaveTState
0000a2 b280 UXTH r0,r0
0000a4 ea000009 AND r0,r0,r9
0000a8 06ca LSLS r2,r1,#27
0000aa d429 BMI |L2.256|
|L2.172|
0000ac 0689 LSLS r1,r1,#26 ;79
0000ae d501 BPL |L2.180|
0000b0 f0800020 EOR r0,r0,#0x20 ;79
|L2.180|
0000b4 f8c40c00 STR r0,[r4,#0xc00]
|L2.184|
;;;116 return;
;;;117 }
;;;118 }
;;;119 }/* if(EPindex == 0) */
;;;120 else
;;;121 {
;;;122 /* Decode and service non control endpoints interrupt */
;;;123
;;;124 /* process related endpoint register */
;;;125 wEPVal = _GetENDPOINT(EPindex);
;;;126 if ((wEPVal & EP_CTR_RX) != 0)
;;;127 {
;;;128 /* clear int flag */
;;;129 _ClearEP_CTR_RX(EPindex);
;;;130
;;;131 /* call OUT service function */
;;;132 (*pEpInt_OUT[EPindex-1])();
;;;133
;;;134 } /* if((wEPVal & EP_CTR_RX) */
;;;135
;;;136 if ((wEPVal & EP_CTR_TX) != 0)
;;;137 {
;;;138 /* clear int flag */
;;;139 _ClearEP_CTR_TX(EPindex);
;;;140
;;;141 /* call IN service function */
;;;142 (*pEpInt_IN[EPindex-1])();
;;;143 } /* if((wEPVal & EP_CTR_TX) != 0) */
;;;144
;;;145 }/* if(EPindex == 0) else */
;;;146
;;;147 }/* while(...) */
;;;148 }
0000b8 e8bd9ff0 POP {r4-r12,pc}
|L2.188|
0000bc 0501 LSLS r1,r0,#20 ;99
0000be d509 BPL |L2.212|
0000c0 f8d40c00 LDR r0,[r4,#0xc00] ;101
0000c4 b280 UXTH r0,r0 ;101
0000c6 ea00000a AND r0,r0,r10 ;101
0000ca f8c40c00 STR r0,[r4,#0xc00] ;101
0000ce f7fffffe BL Setup0_Process
0000d2 e00a B |L2.234|
|L2.212|
0000d4 0400 LSLS r0,r0,#16 ;109
0000d6 d53e BPL |L2.342|
0000d8 f8d40c00 LDR r0,[r4,#0xc00] ;111
0000dc b280 UXTH r0,r0 ;111
0000de ea00000a AND r0,r0,r10 ;111
0000e2 f8c40c00 STR r0,[r4,#0xc00] ;111
0000e6 f7fffffe BL Out0_Process
|L2.234|
0000ea f8d40c00 LDR r0,[r4,#0xc00] ;114
0000ee 8839 LDRH r1,[r7,#0] ;114 ; SaveRState
0000f0 b280 UXTH r0,r0 ;114
0000f2 ea000008 AND r0,r0,r8 ;114
0000f6 04ca LSLS r2,r1,#19 ;114
0000f8 d5ca BPL |L2.144|
0000fa f4805080 EOR r0,r0,#0x1000 ;114
0000fe e7c7 B |L2.144|
|L2.256|
000100 f0800010 EOR r0,r0,#0x10 ;115
000104 e7d2 B |L2.172|
|L2.262|
000106 eb040080 ADD r0,r4,r0,LSL #2 ;125
00010a f8d01c00 LDR r1,[r0,#0xc00] ;125
00010e b28d UXTH r5,r1 ;125
000110 0429 LSLS r1,r5,#16 ;126
000112 d50d BPL |L2.304|
000114 f8d01c00 LDR r1,[r0,#0xc00] ;129
000118 b289 UXTH r1,r1 ;129
00011a ea01010a AND r1,r1,r10 ;129
00011e f8c01c00 STR r1,[r0,#0xc00] ;129
000122 4814 LDR r0,|L2.372|
000124 7831 LDRB r1,[r6,#0] ;132 ; EPindex
000126 eb000081 ADD r0,r0,r1,LSL #2 ;132
00012a f8500c04 LDR r0,[r0,#-4] ;132
00012e 4780 BLX r0 ;132
|L2.304|
000130 0628 LSLS r0,r5,#24 ;136
000132 d510 BPL |L2.342|
000134 7830 LDRB r0,[r6,#0] ;139 ; EPindex
000136 eb040080 ADD r0,r4,r0,LSL #2 ;139
00013a f8d01c00 LDR r1,[r0,#0xc00] ;139
00013e b289 UXTH r1,r1 ;139
000140 ea01010b AND r1,r1,r11 ;139
000144 f8c01c00 STR r1,[r0,#0xc00] ;139
000148 480b LDR r0,|L2.376|
00014a 7831 LDRB r1,[r6,#0] ;142 ; EPindex
00014c eb000081 ADD r0,r0,r1,LSL #2 ;142
000150 f8500c04 LDR r0,[r0,#-4] ;142
000154 4780 BLX r0 ;142
|L2.342|
000156 f8d40c44 LDR r0,[r4,#0xc44] ;45
00015a 4908 LDR r1,|L2.380|
00015c 8008 STRH r0,[r1,#0] ;45
00015e 0400 LSLS r0,r0,#16 ;45
000160 f53faf5c BMI |L2.28|
000164 e7a8 B |L2.184|
;;;149
ENDP
000166 0000 DCW 0x0000
|L2.360|
DCD ||.data||
|L2.364|
DCD EPindex
|L2.368|
DCD 0x40005000
|L2.372|
DCD pEpInt_OUT
|L2.376|
DCD pEpInt_IN
|L2.380|
DCD wIstr
AREA ||.data||, DATA, ALIGN=1
SaveRState
000000 0000 DCB 0x00,0x00
SaveTState
000002 0000 DCB 0x00,0x00
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -