📄 usb_int.txt
字号:
|L1.282|
00011a f8c50c00 STR r0,[r5,#0xc00]
00011e e026 B |L1.366|
000120 e7ff B |L1.290|
|L1.290|
;;;117 }/* if(EPindex == 0) */
;;;118 else
;;;119 {
;;;120 /* Decode and service non control endpoints interrupt */
;;;121
;;;122 /* process related endpoint register */
;;;123 wEPVal = _GetENDPOINT(EPindex);
000122 eb050180 ADD r1,r5,r0,LSL #2
000126 f8d12c00 LDR r2,[r1,#0xc00]
00012a b294 UXTH r4,r2
;;;124 if ((wEPVal & EP_CTR_RX) != 0)
00012c 0422 LSLS r2,r4,#16
00012e d50b BPL |L1.328|
;;;125 {
;;;126 /* clear int flag */
;;;127 _ClearEP_CTR_RX(EPindex);
000130 f8d12c00 LDR r2,[r1,#0xc00]
000134 b292 UXTH r2,r2
000136 4032 ANDS r2,r2,r6
000138 f8c12c00 STR r2,[r1,#0xc00]
;;;128
;;;129 /* call OUT service function */
;;;130 (*pEpInt_OUT[EPindex-1])();
00013c 4914 LDR r1,|L1.400|
00013e eb010080 ADD r0,r1,r0,LSL #2
000142 f8500c04 LDR r0,[r0,#-4]
000146 4780 BLX r0
|L1.328|
;;;131
;;;132 } /* if((wEPVal & EP_CTR_RX) */
;;;133
;;;134 if ((wEPVal & EP_CTR_TX) != 0)
000148 0620 LSLS r0,r4,#24
00014a d510 BPL |L1.366|
;;;135 {
;;;136 /* clear int flag */
;;;137 _ClearEP_CTR_TX(EPindex);
00014c f8990000 LDRB r0,[r9,#0] ; EPindex
000150 eb050180 ADD r1,r5,r0,LSL #2
000154 f8d12c00 LDR r2,[r1,#0xc00]
000158 b292 UXTH r2,r2
00015a ea02020a AND r2,r2,r10
00015e f8c12c00 STR r2,[r1,#0xc00]
;;;138
;;;139 /* call IN service function */
;;;140 (*pEpInt_IN[EPindex-1])();
000162 490c LDR r1,|L1.404|
000164 eb010080 ADD r0,r1,r0,LSL #2
000168 f8500c04 LDR r0,[r0,#-4]
00016c 4780 BLX r0
|L1.366|
00016e f8d50c44 LDR r0,[r5,#0xc44] ;45
000172 f8ab0000 STRH r0,[r11,#0] ;45 ; wIstr
000176 0400 LSLS r0,r0,#16 ;45
000178 f53faf50 BMI |L1.28|
;;;141 } /* if((wEPVal & EP_CTR_TX) != 0) */
;;;142
;;;143 }/* if(EPindex == 0) else */
;;;144
;;;145 }/* while(...) */
;;;146 }
00017c e8bd9ff0 POP {r4-r12,pc}
;;;147
ENDP
|L1.384|
000180 00000000 DCD ||.data||
|L1.388|
000184 40005000 DCD 0x40005000
|L1.392|
000188 00000000 DCD wIstr
|L1.396|
00018c 00000000 DCD EPindex
|L1.400|
000190 00000000 DCD pEpInt_OUT
|L1.404|
000194 00000000 DCD pEpInt_IN
AREA ||i.CTR_HP||, CODE, READONLY, ALIGN=2
CTR_HP PROC
;;;156 void CTR_HP(void)
;;;157 {
000000 e92d41f0 PUSH {r4-r8,lr}
000004 4d1d LDR r5,|L2.124|
000006 4e1e LDR r6,|L2.128|
000008 4f1e LDR r7,|L2.132|
;;;158 u32 wEPVal;
;;;159
;;;160 while (((wIstr = _GetISTR()) & ISTR_CTR) != 0)
00000a e030 B |L2.110|
|L2.12|
;;;161 {
;;;162 _SetISTR((u16)CLR_CTR); /* clear CTR flag */
00000c f64770ff MOV r0,#0x7fff
000010 f8c60c44 STR r0,[r6,#0xc44]
;;;163 /* extract highest priority endpoint number */
;;;164 EPindex = (u8)(wIstr & ISTR_EP_ID);
000014 8838 LDRH r0,[r7,#0] ; wIstr
000016 f000000f AND r0,r0,#0xf
00001a 7028 STRB r0,[r5,#0] ; EPindex
;;;165 /* process related endpoint register */
;;;166 wEPVal = _GetENDPOINT(EPindex);
00001c b2c1 UXTB r1,r0
00001e eb060081 ADD r0,r6,r1,LSL #2
000022 f8d02c00 LDR r2,[r0,#0xc00]
000026 b294 UXTH r4,r2
;;;167 if ((wEPVal & EP_CTR_RX) != 0)
000028 0422 LSLS r2,r4,#16
00002a d50d BPL |L2.72|
;;;168 {
;;;169 /* clear int flag */
;;;170 _ClearEP_CTR_RX(EPindex);
00002c f8d02c00 LDR r2,[r0,#0xc00]
000030 f640738f MOV r3,#0xf8f
000034 b292 UXTH r2,r2
000036 401a ANDS r2,r2,r3
000038 f8c02c00 STR r2,[r0,#0xc00]
;;;171
;;;172 /* call OUT service function */
;;;173 (*pEpInt_OUT[EPindex-1])();
00003c 4812 LDR r0,|L2.136|
00003e eb000081 ADD r0,r0,r1,LSL #2
000042 f8500c04 LDR r0,[r0,#-4]
000046 4780 BLX r0
|L2.72|
;;;174
;;;175 } /* if((wEPVal & EP_CTR_RX) */
;;;176 if ((wEPVal & EP_CTR_TX) != 0)
000048 0620 LSLS r0,r4,#24
00004a d510 BPL |L2.110|
;;;177 {
;;;178 /* clear int flag */
;;;179 _ClearEP_CTR_TX(EPindex);
00004c 7828 LDRB r0,[r5,#0] ; EPindex
00004e eb060180 ADD r1,r6,r0,LSL #2
000052 f8d12c00 LDR r2,[r1,#0xc00]
000056 f648730f MOV r3,#0x8f0f
00005a b292 UXTH r2,r2
00005c 401a ANDS r2,r2,r3
00005e f8c12c00 STR r2,[r1,#0xc00]
;;;180
;;;181 /* call IN service function */
;;;182 (*pEpInt_IN[EPindex-1])();
000062 490a LDR r1,|L2.140|
000064 eb010080 ADD r0,r1,r0,LSL #2
000068 f8500c04 LDR r0,[r0,#-4]
00006c 4780 BLX r0
|L2.110|
00006e f8d60c44 LDR r0,[r6,#0xc44] ;160
000072 8038 STRH r0,[r7,#0] ;160 ; wIstr
000074 0400 LSLS r0,r0,#16 ;160
000076 d4c9 BMI |L2.12|
;;;183
;;;184
;;;185 } /* if((wEPVal & EP_CTR_TX) != 0) */
;;;186
;;;187 }/* while(...) */
;;;188 }
000078 e8bd81f0 POP {r4-r8,pc}
;;;189
ENDP
|L2.124|
00007c 00000000 DCD EPindex
|L2.128|
000080 40005000 DCD 0x40005000
|L2.132|
000084 00000000 DCD wIstr
|L2.136|
000088 00000000 DCD pEpInt_OUT
|L2.140|
00008c 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 + -