📄 usb_int.lst
字号:
1 .syntax unified
2 .cpu cortex-m3
3 .fpu softvfp
4 .eabi_attribute 20, 1
5 .eabi_attribute 21, 1
6 .eabi_attribute 23, 3
7 .eabi_attribute 24, 1
8 .eabi_attribute 25, 1
9 .eabi_attribute 26, 1
10 .eabi_attribute 30, 4
11 .eabi_attribute 18, 4
12 .thumb
13 .file "usb_int.c"
21 .Ltext0:
22 .section .text.CTR_HP,"ax",%progbits
23 .align 2
24 .global CTR_HP
25 .thumb
26 .thumb_func
28 CTR_HP:
29 .LFB27:
30 .file 1 "lib/STM32_USB-FS-Device_Driver/src/usb_int.c"
1:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /******************** (C) COPYRIGHT 2009 STMicroelectronics ********************
2:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** * File Name : usb_int.c
3:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** * Author : MCD Application Team
4:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** * Version : V3.0.1
5:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** * Date : 04/27/2009
6:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** * Description : Endpoint CTR (Low and High) interrupt's service routines
7:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** ********************************************************************************
8:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
9:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
10:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
11:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
12:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
13:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
14:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** *******************************************************************************/
15:lib/STM32_USB-FS-Device_Driver/src/usb_int.c ****
16:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* Includes ------------------------------------------------------------------*/
17:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** #include "usb_lib.h"
18:lib/STM32_USB-FS-Device_Driver/src/usb_int.c ****
19:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* Private typedef -----------------------------------------------------------*/
20:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* Private define ------------------------------------------------------------*/
21:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* Private macro -------------------------------------------------------------*/
22:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* Private variables ---------------------------------------------------------*/
23:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** uint16_t SaveRState;
24:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** uint16_t SaveTState;
25:lib/STM32_USB-FS-Device_Driver/src/usb_int.c ****
26:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* Extern variables ----------------------------------------------------------*/
27:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** extern void (*pEpInt_IN[7])(void); /* Handles IN interrupts */
28:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** extern void (*pEpInt_OUT[7])(void); /* Handles OUT interrupts */
29:lib/STM32_USB-FS-Device_Driver/src/usb_int.c ****
30:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* Private function prototypes -----------------------------------------------*/
31:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* Private functions ---------------------------------------------------------*/
32:lib/STM32_USB-FS-Device_Driver/src/usb_int.c ****
33:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /*******************************************************************************
34:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** * Function Name : CTR_LP.
35:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** * Description : Low priority Endpoint Correct Transfer interrupt's service
36:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** * routine.
37:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** * Input : None.
38:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** * Output : None.
39:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** * Return : None.
40:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** *******************************************************************************/
41:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** void CTR_LP(void)
42:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** {
43:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** uint32_t wEPVal = 0;
44:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* stay in loop while pending ints */
45:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** while (((wIstr = _GetISTR()) & ISTR_CTR) != 0)
46:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** {
47:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** _SetISTR((uint16_t)CLR_CTR); /* clear CTR flag */
48:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* extract highest priority endpoint number */
49:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** EPindex = (uint8_t)(wIstr & ISTR_EP_ID);
50:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** if (EPindex == 0)
51:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** {
52:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* Decode and service control endpoint interrupt */
53:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* calling related service routine */
54:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* (Setup0_Process, In0_Process, Out0_Process) */
55:lib/STM32_USB-FS-Device_Driver/src/usb_int.c ****
56:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* save RX & TX status */
57:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* and set both to NAK */
58:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** SaveRState = _GetEPRxStatus(ENDP0);
59:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** SaveTState = _GetEPTxStatus(ENDP0);
60:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** _SetEPRxStatus(ENDP0, EP_RX_NAK);
61:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** _SetEPTxStatus(ENDP0, EP_TX_NAK);
62:lib/STM32_USB-FS-Device_Driver/src/usb_int.c ****
63:lib/STM32_USB-FS-Device_Driver/src/usb_int.c ****
64:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* DIR bit = origin of the interrupt */
65:lib/STM32_USB-FS-Device_Driver/src/usb_int.c ****
66:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** if ((wIstr & ISTR_DIR) == 0)
67:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** {
68:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* DIR = 0 */
69:lib/STM32_USB-FS-Device_Driver/src/usb_int.c ****
70:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* DIR = 0 => IN int */
71:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* DIR = 0 implies that (EP_CTR_TX = 1) always */
72:lib/STM32_USB-FS-Device_Driver/src/usb_int.c ****
73:lib/STM32_USB-FS-Device_Driver/src/usb_int.c ****
74:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** _ClearEP_CTR_TX(ENDP0);
75:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** In0_Process();
76:lib/STM32_USB-FS-Device_Driver/src/usb_int.c ****
77:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* before terminate set Tx & Rx status */
78:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** _SetEPRxStatus(ENDP0, SaveRState);
79:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** _SetEPTxStatus(ENDP0, SaveTState);
80:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** return;
81:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** }
82:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** else
83:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** {
84:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* DIR = 1 */
85:lib/STM32_USB-FS-Device_Driver/src/usb_int.c ****
86:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* DIR = 1 & CTR_RX => SETUP or OUT int */
87:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* DIR = 1 & (CTR_TX | CTR_RX) => 2 int pending */
88:lib/STM32_USB-FS-Device_Driver/src/usb_int.c ****
89:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** wEPVal = _GetENDPOINT(ENDP0);
90:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** if ((wEPVal & EP_CTR_TX) != 0)
91:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** {
92:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** _ClearEP_CTR_TX(ENDP0);
93:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** In0_Process();
94:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* before terminate set Tx & Rx status */
95:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** _SetEPRxStatus(ENDP0, SaveRState);
96:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** _SetEPTxStatus(ENDP0, SaveTState);
97:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** return;
98:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** }
99:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** else if ((wEPVal &EP_SETUP) != 0)
100:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** {
101:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** _ClearEP_CTR_RX(ENDP0); /* SETUP bit kept frozen while CTR_RX = 1 */
102:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** Setup0_Process();
103:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* before terminate set Tx & Rx status */
104:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** _SetEPRxStatus(ENDP0, SaveRState);
105:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** _SetEPTxStatus(ENDP0, SaveTState);
106:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** return;
107:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** }
108:lib/STM32_USB-FS-Device_Driver/src/usb_int.c ****
109:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** else if ((wEPVal & EP_CTR_RX) != 0)
110:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** {
111:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** _ClearEP_CTR_RX(ENDP0);
112:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** Out0_Process();
113:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* before terminate set Tx & Rx status */
114:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** _SetEPRxStatus(ENDP0, SaveRState);
115:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** _SetEPTxStatus(ENDP0, SaveTState);
116:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** return;
117:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** }
118:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** }
119:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** }/* if(EPindex == 0) */
120:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** else
121:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** {
122:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* Decode and service non control endpoints interrupt */
123:lib/STM32_USB-FS-Device_Driver/src/usb_int.c ****
124:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* process related endpoint register */
125:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** wEPVal = _GetENDPOINT(EPindex);
126:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** if ((wEPVal & EP_CTR_RX) != 0)
127:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** {
128:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* clear int flag */
129:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** _ClearEP_CTR_RX(EPindex);
130:lib/STM32_USB-FS-Device_Driver/src/usb_int.c ****
131:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* call OUT service function */
132:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** (*pEpInt_OUT[EPindex-1])();
133:lib/STM32_USB-FS-Device_Driver/src/usb_int.c ****
134:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** } /* if((wEPVal & EP_CTR_RX) */
135:lib/STM32_USB-FS-Device_Driver/src/usb_int.c ****
136:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** if ((wEPVal & EP_CTR_TX) != 0)
137:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** {
138:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* clear int flag */
139:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** _ClearEP_CTR_TX(EPindex);
140:lib/STM32_USB-FS-Device_Driver/src/usb_int.c ****
141:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* call IN service function */
142:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** (*pEpInt_IN[EPindex-1])();
143:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** } /* if((wEPVal & EP_CTR_TX) != 0) */
144:lib/STM32_USB-FS-Device_Driver/src/usb_int.c ****
145:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** }/* if(EPindex == 0) else */
146:lib/STM32_USB-FS-Device_Driver/src/usb_int.c ****
147:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** }/* while(...) */
148:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** }
149:lib/STM32_USB-FS-Device_Driver/src/usb_int.c ****
150:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /*******************************************************************************
151:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** * Function Name : CTR_HP.
152:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** * Description : High Priority Endpoint Correct Transfer interrupt's service
153:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** * routine.
154:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** * Input : None.
155:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** * Output : None.
156:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** * Return : None.
157:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** *******************************************************************************/
158:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** void CTR_HP(void)
159:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** {
31 .loc 1 159 0
32 @ args = 0, pretend = 0, frame = 0
33 @ frame_needed = 0, uses_anonymous_args = 0
34 0000 10B5 push {r4, lr}
35 .LCFI0:
36 0002 2AE0 b .L7
37 .L4:
160:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** uint32_t wEPVal = 0;
161:lib/STM32_USB-FS-Device_Driver/src/usb_int.c ****
162:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** while (((wIstr = _GetISTR()) & ISTR_CTR) != 0)
163:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** {
164:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** _SetISTR((uint16_t)CLR_CTR); /* clear CTR flag */
38 .loc 1 164 0
39 0004 47F6FF73 movw r3, #32767
40 0008 0B60 str r3, [r1, #0]
165:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* extract highest priority endpoint number */
166:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** EPindex = (uint8_t)(wIstr & ISTR_EP_ID);
41 .loc 1 166 0
42 000a 1388 ldrh r3, [r2, #0]
43 000c 1848 ldr r0, .L9
44 000e 03F00F03 and r3, r3, #15
45 .LVL0:
46 0012 0370 strb r3, [r0, #0]
167:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* process related endpoint register */
168:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** wEPVal = _GetENDPOINT(EPindex);
47 .loc 1 168 0
48 0014 9B00 lsls r3, r3, #2
49 .LVL1:
50 0016 03F18041 add r1, r3, #1073741824
51 001a 01F5B841 add r1, r1, #23552
52 001e 0B68 ldr r3, [r1, #0]
53 0020 9BB2 uxth r3, r3
54 .LVL2:
169:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** if ((wEPVal & EP_CTR_RX) != 0)
55 .loc 1 169 0
56 0022 13F4004F tst r3, #32768
57 0026 09D0 beq .L3
170:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** {
171:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* clear int flag */
172:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** _ClearEP_CTR_RX(EPindex);
58 .loc 1 172 0
59 0028 0A68 ldr r2, [r1, #0]
60 002a 40F68F73 movw r3, #3983
61 .LVL3:
62 002e 02EA0303 and r3, r2, r3
63 0032 0B60 str r3, [r1, #0]
173:lib/STM32_USB-FS-Device_Driver/src/usb_int.c ****
174:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* call OUT service function */
175:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** (*pEpInt_OUT[EPindex-1])();
64 .loc 1 175 0
65 0034 0378 ldrb r3, [r0, #0] @ zero_extendqisi2
66 0036 0F4A ldr r2, .L9+4
67 0038 013B subs r3, r3, #1
68 003a 0BE0 b .L8
69 .LVL4:
70 .L3:
176:lib/STM32_USB-FS-Device_Driver/src/usb_int.c ****
177:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** } /* if((wEPVal & EP_CTR_RX) */
178:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** else if ((wEPVal & EP_CTR_TX) != 0)
71 .loc 1 178 0
72 003c 13F0800F tst r3, #128
73 0040 0BD0 beq .L7
179:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** {
180:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* clear int flag */
181:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** _ClearEP_CTR_TX(EPindex);
74 .loc 1 181 0
75 0042 0A68 ldr r2, [r1, #0]
76 0044 48F60F73 movw r3, #36623
77 .LVL5:
78 0048 02EA0303 and r3, r2, r3
79 004c 0B60 str r3, [r1, #0]
182:lib/STM32_USB-FS-Device_Driver/src/usb_int.c ****
183:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** /* call IN service function */
184:lib/STM32_USB-FS-Device_Driver/src/usb_int.c **** (*pEpInt_IN[EPindex-1])();
80 .loc 1 184 0
81 004e 0378 ldrb r3, [r0, #0] @ zero_extendqisi2
82 0050 094A ldr r2, .L9+8
83 0052 013B subs r3, r3, #1
84 .L8:
85 0054 52F82330 ldr r3, [r2, r3, lsl #2]
86 0058 9847 blx r3
87 .LVL6:
88 .L7:
89 .loc 1 162 0
90 005a 0849 ldr r1, .L9+12
91 005c 084A ldr r2, .L9+16
92 005e 0B68 ldr r3, [r1, #0]
93 .LVL7:
94 0060 9BB2 uxth r3, r3
95 .LVL8:
96 0062 1380 strh r3, [r2, #0] @ movhi
97 0064 1388 ldrh r3, [r2, #0]
98 .LVL9:
99 0066 1BB2 sxth r3, r3
100 0068 002B cmp r3, #0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -