📄 usb_int.txt
字号:
;;;147 }/* while(...) */
;;;148 }
0000bc e8bde8bd POP {r4-r12,pc}
|L1.192|
0000c0 0501 LSLS r1,r0,#20 ;99
0000c2 d509 BPL |L1.216|
0000c4 f8d4f8d4 LDR r0,[r4,#0xc00] ;101
0000c8 b280 UXTH r0,r0 ;101
0000ca ea00ea00 AND r0,r0,r10 ;101
0000ce f8c4f8c4 STR r0,[r4,#0xc00] ;101
0000d2 f7fff7ff BL Setup0_Process
0000d6 e00a B |L1.238|
|L1.216|
0000d8 0400 LSLS r0,r0,#16 ;109
0000da d53d BPL |L1.344|
0000dc f8d4f8d4 LDR r0,[r4,#0xc00] ;111
0000e0 b280 UXTH r0,r0 ;111
0000e2 ea00ea00 AND r0,r0,r10 ;111
0000e6 f8c4f8c4 STR r0,[r4,#0xc00] ;111
0000ea f7fff7ff BL Out0_Process
|L1.238|
0000ee f8d4f8d4 LDR r0,[r4,#0xc00] ;114
0000f2 f8b8f8b8 LDRH r1,[r8,#0] ;114 ; SaveRState
0000f6 b280 UXTH r0,r0 ;114
0000f8 4030 ANDS r0,r0,r6 ;114
0000fa 04ca LSLS r2,r1,#19 ;114
0000fc d5ca BPL |L1.148|
0000fe f480f480 EOR r0,r0,#0x1000 ;114
000102 e7c7 B |L1.148|
|L1.260|
000104 f080f080 EOR r0,r0,#0x10 ;115
000108 e7d2 B |L1.176|
|L1.266|
00010a eb04eb04 ADD r1,r4,r0,LSL #2 ;125
00010e f8d1f8d1 LDR r2,[r1,#0xc00] ;125
000112 b295 UXTH r5,r2 ;125
000114 042a LSLS r2,r5,#16 ;126
000116 d50c BPL |L1.306|
000118 f8d1f8d1 LDR r2,[r1,#0xc00] ;129
00011c b292 UXTH r2,r2 ;129
00011e ea02ea02 AND r2,r2,r10 ;129
000122 f8c1f8c1 STR r2,[r1,#0xc00] ;129
000126 4913 LDR r1,|L1.372|
000128 eb01eb01 ADD r0,r1,r0,LSL #2 ;132
00012c f850f850 LDR r0,[r0,#-4] ;132
000130 4780 BLX r0 ;132
|L1.306|
000132 0628 LSLS r0,r5,#24 ;136
000134 d510 BPL |L1.344|
000136 f899f899 LDRB r0,[r9,#0] ;139 ; EPindex
00013a eb04eb04 ADD r1,r4,r0,LSL #2 ;139
00013e f8d1f8d1 LDR r2,[r1,#0xc00] ;139
000142 b292 UXTH r2,r2 ;139
000144 ea02ea02 AND r2,r2,r11 ;139
000148 f8c1f8c1 STR r2,[r1,#0xc00] ;139
00014c 490a LDR r1,|L1.376|
00014e eb01eb01 ADD r0,r1,r0,LSL #2 ;142
000152 f850f850 LDR r0,[r0,#-4] ;142
000156 4780 BLX r0 ;142
|L1.344|
000158 f8d4f8d4 LDR r0,[r4,#0xc44] ;45
00015c 4907 LDR r1,|L1.380|
00015e 8008 STRH r0,[r1,#0] ;45 ; wIstr
000160 0400 LSLS r0,r0,#16 ;45
000162 f53ff53f BMI |L1.32|
000166 e7a9 B |L1.188|
;;;149
ENDP
|L1.360|
000168 00000000 DCD ||.data||
|L1.364|
00016c 00000000 DCD EPindex
|L1.368|
000170 40005000 DCD 0x40005000
|L1.372|
000174 00000000 DCD pEpInt_OUT
|L1.376|
000178 00000000 DCD pEpInt_IN
|L1.380|
00017c 00000000 DCD wIstr
AREA ||i.CTR_HP||, CODE, READONLY, ALIGN=2
CTR_HP PROC
;;;158 void CTR_HP(void)
;;;159 {
000000 b570 PUSH {r4-r6,lr}
000002 4c1a LDR r4,|L2.108|
000004 4d1a LDR r5,|L2.112|
000006 4e1b LDR r6,|L2.116|
;;;160 u32 wEPVal = 0;
;;;161
;;;162 while (((wIstr = _GetISTR()) & ISTR_CTR) != 0)
000008 e02a B |L2.96|
;;;163 {
;;;164 _SetISTR((u16)CLR_CTR); /* clear CTR flag */
00000a bf00 NOP
|L2.12|
00000c f647f647 MOV r0,#0x7fff
000010 f8c5f8c5 STR r0,[r5,#0xc44]
;;;165 /* extract highest priority endpoint number */
;;;166 EPindex = (u8)(wIstr & ISTR_EP_ID);
000014 8830 LDRH r0,[r6,#0] ; wIstr
000016 f000f000 AND r0,r0,#0xf
00001a 7020 STRB r0,[r4,#0] ; EPindex
;;;167 /* process related endpoint register */
;;;168 wEPVal = _GetENDPOINT(EPindex);
00001c b2c1 UXTB r1,r0
00001e eb05eb05 ADD r0,r5,r1,LSL #2
000022 f8d0f8d0 LDR r2,[r0,#0xc00]
000026 b292 UXTH r2,r2
;;;169 if ((wEPVal & EP_CTR_RX) != 0)
000028 0413 LSLS r3,r2,#16
00002a d509 BPL |L2.64|
;;;170 {
;;;171 /* clear int flag */
;;;172 _ClearEP_CTR_RX(EPindex);
00002c f8d0f8d0 LDR r2,[r0,#0xc00]
000030 f640f640 MOV r3,#0xf8f
000034 b292 UXTH r2,r2
000036 401a ANDS r2,r2,r3
000038 f8c0f8c0 STR r2,[r0,#0xc00]
;;;173
;;;174 /* call OUT service function */
;;;175 (*pEpInt_OUT[EPindex-1])();
00003c 480e LDR r0,|L2.120|
00003e e00a B |L2.86|
|L2.64|
;;;176
;;;177 } /* if((wEPVal & EP_CTR_RX) */
;;;178 else if ((wEPVal & EP_CTR_TX) != 0)
000040 0612 LSLS r2,r2,#24
000042 d50d BPL |L2.96|
;;;179 {
;;;180 /* clear int flag */
;;;181 _ClearEP_CTR_TX(EPindex);
000044 f8d0f8d0 LDR r2,[r0,#0xc00]
000048 f648f648 MOV r3,#0x8f0f
00004c b292 UXTH r2,r2
00004e 401a ANDS r2,r2,r3
000050 f8c0f8c0 STR r2,[r0,#0xc00]
;;;182
;;;183 /* call IN service function */
;;;184 (*pEpInt_IN[EPindex-1])();
000054 4809 LDR r0,|L2.124|
|L2.86|
000056 eb00eb00 ADD r0,r0,r1,LSL #2
00005a f850f850 LDR r0,[r0,#-4]
00005e 4780 BLX r0
|L2.96|
000060 f8d5f8d5 LDR r0,[r5,#0xc44] ;162
000064 8030 STRH r0,[r6,#0] ;162 ; wIstr
000066 0400 LSLS r0,r0,#16 ;162
000068 d4d0 BMI |L2.12|
;;;185
;;;186
;;;187 } /* if((wEPVal & EP_CTR_TX) != 0) */
;;;188
;;;189 }/* while(...) */
;;;190 }
00006a bd70 POP {r4-r6,pc}
;;;191
ENDP
|L2.108|
00006c 00000000 DCD EPindex
|L2.112|
000070 40005000 DCD 0x40005000
|L2.116|
000074 00000000 DCD wIstr
|L2.120|
000078 00000000 DCD pEpInt_OUT
|L2.124|
00007c 00000000 DCD pEpInt_IN
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 + -