📄 stm32f10x_gpio.lst
字号:
169:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** assert_param(IS_GPIO_MODE(GPIO_InitStruct->GPIO_Mode));
170:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** assert_param(IS_GPIO_PIN(GPIO_InitStruct->GPIO_Pin));
171:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c ****
172:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** /*---------------------------- GPIO Mode Configuration -----------------------*/
173:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** currentmode = ((uint32_t)GPIO_InitStruct->GPIO_Mode) & ((uint32_t)0x0F);
37 .loc 1 173 0
38 0002 CB78 ldrb r3, [r1, #3] @ zero_extendqisi2
39 .loc 1 164 0
40 0004 0446 mov r4, r0
174:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** if ((((uint32_t)GPIO_InitStruct->GPIO_Mode) & ((uint32_t)0x10)) != 0x00)
41 .loc 1 174 0
42 0006 13F0100F tst r3, #16
43 .loc 1 173 0
44 000a 03F00F06 and r6, r3, #15
45 .LVL1:
175:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** {
176:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** /* Check the parameters */
177:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** assert_param(IS_GPIO_SPEED(GPIO_InitStruct->GPIO_Speed));
178:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** /* Output mode */
179:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** currentmode |= (uint32_t)GPIO_InitStruct->GPIO_Speed;
46 .loc 1 179 0
47 000e 18BF it ne
48 0010 8B78 ldrbne r3, [r1, #2] @ zero_extendqisi2
49 .loc 1 164 0
50 0012 0846 mov r0, r1
51 .LVL2:
52 .loc 1 179 0
53 0014 18BF it ne
54 0016 1E43 orrne r6, r6, r3
180:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** }
181:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** /*---------------------------- GPIO CRL Configuration ------------------------*/
182:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** /* Configure the eight low port pins */
183:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** if (((uint32_t)GPIO_InitStruct->GPIO_Pin & ((uint32_t)0x00FF)) != 0x00)
55 .loc 1 183 0
56 0018 0B78 ldrb r3, [r1, #0] @ zero_extendqisi2
57 001a 13B3 cbz r3, .L3
184:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** {
185:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** tmpreg = GPIOx->CRL;
58 .loc 1 185 0
59 001c 2568 ldr r5, [r4, #0]
60 .LVL3:
61 001e 4FF0000C mov ip, #0
62 .LVL4:
63 .L6:
186:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** for (pinpos = 0x00; pinpos < 0x08; pinpos++)
187:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** {
188:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** pos = ((uint32_t)0x01) << pinpos;
64 .loc 1 188 0
65 0022 0123 movs r3, #1
66 .LVL5:
67 0024 03FA0CF3 lsl r3, r3, ip
68 .LVL6:
189:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** /* Get the port pins position */
190:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** currentpin = (GPIO_InitStruct->GPIO_Pin) & pos;
69 .loc 1 190 0
70 0028 0288 ldrh r2, [r0, #0]
71 002a 03EA0201 and r1, r3, r2
191:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** if (currentpin == pos)
72 .loc 1 191 0
73 002e 9942 cmp r1, r3
74 0030 11D1 bne .L4
192:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** {
193:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** pos = pinpos << 2;
194:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** /* Clear the corresponding low control register bits */
195:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** pinmask = ((uint32_t)0x0F) << pos;
75 .loc 1 195 0
76 0032 4FEA8C02 lsl r2, ip, #2
196:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** tmpreg &= ~pinmask;
77 .loc 1 196 0
78 0036 0F23 movs r3, #15
79 .LVL7:
80 0038 9340 lsls r3, r3, r2
197:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** /* Write the mode configuration in the corresponding bits */
198:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** tmpreg |= (currentmode << pos);
81 .loc 1 198 0
82 003a 16FA02F2 lsls r2, r6, r2
83 .loc 1 196 0
84 003e 25EA0303 bic r3, r5, r3
85 .LVL8:
86 .loc 1 198 0
87 0042 43EA0205 orr r5, r3, r2
88 .LVL9:
199:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** /* Reset the corresponding ODR bit */
200:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPD)
89 .loc 1 200 0
90 0046 C378 ldrb r3, [r0, #3] @ zero_extendqisi2
91 0048 282B cmp r3, #40
92 004a 01D1 bne .L5
201:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** {
202:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** GPIOx->BRR = (((uint32_t)0x01) << pinpos);
93 .loc 1 202 0
94 004c 6161 str r1, [r4, #20]
95 004e 02E0 b .L4
96 .L5:
203:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** }
204:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** else
205:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** {
206:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** /* Set the corresponding ODR bit */
207:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPU)
97 .loc 1 207 0
98 0050 482B cmp r3, #72
208:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** {
209:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** GPIOx->BSRR = (((uint32_t)0x01) << pinpos);
99 .loc 1 209 0
100 0052 08BF it eq
101 0054 2161 streq r1, [r4, #16]
102 .LVL10:
103 .L4:
104 .loc 1 186 0
105 0056 0CF1010C add ip, ip, #1
106 005a BCF1080F cmp ip, #8
107 005e E0D1 bne .L6
210:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** }
211:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** }
212:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** }
213:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** }
214:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** GPIOx->CRL = tmpreg;
108 .loc 1 214 0
109 0060 2560 str r5, [r4, #0]
110 .LVL11:
111 .L3:
215:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** }
216:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** /*---------------------------- GPIO CRH Configuration ------------------------*/
217:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** /* Configure the eight high port pins */
218:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** if (GPIO_InitStruct->GPIO_Pin > 0x00FF)
112 .loc 1 218 0
113 0062 0388 ldrh r3, [r0, #0]
114 .LVL12:
115 0064 FF2B cmp r3, #255
116 0066 24D9 bls .L11
219:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** {
220:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** tmpreg = GPIOx->CRH;
117 .loc 1 220 0
118 0068 6568 ldr r5, [r4, #4]
119 .LVL13:
120 006a 4FF0000C mov ip, #0
121 .LVL14:
122 .L10:
221:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** for (pinpos = 0x00; pinpos < 0x08; pinpos++)
222:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** {
223:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** pos = (((uint32_t)0x01) << (pinpos + 0x08));
123 .loc 1 223 0
124 006e 0123 movs r3, #1
125 .LVL15:
126 0070 0CF10802 add r2, ip, #8
127 0074 13FA02F1 lsls r1, r3, r2
128 .LVL16:
224:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** /* Get the port pins position */
225:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** currentpin = ((GPIO_InitStruct->GPIO_Pin) & pos);
129 .loc 1 225 0
130 0078 0388 ldrh r3, [r0, #0]
131 007a 01EA0303 and r3, r1, r3
132 .LVL17:
226:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** if (currentpin == pos)
133 .loc 1 226 0
134 007e 8B42 cmp r3, r1
135 0080 11D1 bne .L8
227:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** {
228:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** pos = pinpos << 2;
229:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** /* Clear the corresponding high control register bits */
230:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** pinmask = ((uint32_t)0x0F) << pos;
136 .loc 1 230 0
137 0082 4FEA8C03 lsl r3, ip, #2
138 .LVL18:
231:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** tmpreg &= ~pinmask;
139 .loc 1 231 0
140 0086 0F22 movs r2, #15
141 0088 9A40 lsls r2, r2, r3
232:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** /* Write the mode configuration in the corresponding bits */
233:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** tmpreg |= (currentmode << pos);
142 .loc 1 233 0
143 008a 16FA03F3 lsls r3, r6, r3
144 .loc 1 231 0
145 008e 25EA0202 bic r2, r5, r2
146 .LVL19:
147 .loc 1 233 0
148 0092 42EA0305 orr r5, r2, r3
149 .LVL20:
234:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** /* Reset the corresponding ODR bit */
235:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPD)
150 .loc 1 235 0
151 0096 C378 ldrb r3, [r0, #3] @ zero_extendqisi2
152 0098 282B cmp r3, #40
236:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** {
237:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** GPIOx->BRR = (((uint32_t)0x01) << (pinpos + 0x08));
153 .loc 1 237 0
154 009a 08BF it eq
155 009c 6161 streq r1, [r4, #20]
238:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** }
239:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** /* Set the corresponding ODR bit */
240:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPU)
156 .loc 1 240 0
157 009e C378 ldrb r3, [r0, #3] @ zero_extendqisi2
158 00a0 482B cmp r3, #72
241:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** {
242:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c **** GPIOx->BSRR = (((uint32_t)0x01) << (pinpos + 0x08));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -