stm32f4xx_exti.txt
13.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
; generated by Component: ARM Compiler 5.06 update 6 (build 750) Tool: ArmCC [4d3637]
; commandline ArmCC [--c99 --list --split_sections --debug -c --asm --interleave -o.\flash\obj\stm32f4xx_exti.o --asm_dir=.\Flash\List\ --list_dir=.\Flash\List\ --depend=.\flash\obj\stm32f4xx_exti.d --cpu=Cortex-M4.fp --apcs=interwork -O1 --diag_suppress=9931,870 -I..\..\Libraries\CMSIS\Include -I..\..\Libraries\CMSIS\Device\ST\STM32F4xx\Include -I..\..\Libraries\STM32F4xx_StdPeriph_Driver\inc -I..\..\uCOS-III\uC-CPU -I..\..\uCOS-III\uC-LIB -I..\..\uCOS-III\uCOS-III\Ports -I..\..\uCOS-III\uCOS-III\Source -I..\..\uCOS-III\uC-CPU\ARM-Cortex-M4\RealView -I..\..\uCOS-III\uC-LIB\Ports\ARM-Cortex-M4\RealView -I..\..\uCOS-III\uCOS-III\Ports\ARM-Cortex-M4\Generic\RealView -I..\..\User -I..\..\User\bsp -I..\..\User\bsp\inc -I..\..\User\libapp -I..\..\RL-ARM\Config -I..\..\RL-ARM\Driver -I..\..\RL-ARM\RL-RTX\inc -I..\..\User\bsp\BSP -I..\..\RL-ARM\RL-CAN -I..\..\Libraries\DSP_LIB\Include -I..\..\MODBUS\modbus\rtu -I..\..\MODBUS\BARE\port -I..\..\MODBUS\modbus\include -I..\..\User\bsp\BSP -I..\..\PLC -I..\..\Avoid -I..\..\User\parameter -I..\..\User\LaserMotionCtr -I..\..\User\W5100S -I..\..\User\bsp -I..\..\User\CHASSIS -I..\..\User\CONTROLFUNCTION -I..\..\User\DATAUPDATE -I..\..\User\HARAWARE -I..\..\User\MOTORDRIVER -I..\..\User\NAVAGATION -I..\..\User\PLATFORM -I..\..\User\SENSOR -I.\RTE\_Flash -IC:\Users\YDJ\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include -IC:\Users\YDJ\AppData\Local\Arm\Packs\Keil\STM32F4xx_DFP\2.13.0\Drivers\CMSIS\Device\ST\STM32F4xx\Include -D__UVISION_VERSION=527 -D_RTE_ -DSTM32F407xx -DUSE_STDPERIPH_DRIVER -DSTM32F40_41xxx -D__RTX -D__FPU_USED=1 --omf_browse=.\flash\obj\stm32f4xx_exti.crf ..\..\Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_exti.c]
THUMB
AREA ||i.EXTI_ClearFlag||, CODE, READONLY, ALIGN=2
EXTI_ClearFlag PROC
;;;248 */
;;;249 void EXTI_ClearFlag(uint32_t EXTI_Line)
000000 4901 LDR r1,|L1.8|
;;;250 {
;;;251 /* Check the parameters */
;;;252 assert_param(IS_EXTI_LINE(EXTI_Line));
;;;253
;;;254 EXTI->PR = EXTI_Line;
000002 6008 STR r0,[r1,#0]
;;;255 }
000004 4770 BX lr
;;;256
ENDP
000006 0000 DCW 0x0000
|L1.8|
DCD 0x40013c14
AREA ||i.EXTI_ClearITPendingBit||, CODE, READONLY, ALIGN=2
EXTI_ClearITPendingBit PROC
;;;286 */
;;;287 void EXTI_ClearITPendingBit(uint32_t EXTI_Line)
000000 4901 LDR r1,|L2.8|
;;;288 {
;;;289 /* Check the parameters */
;;;290 assert_param(IS_EXTI_LINE(EXTI_Line));
;;;291
;;;292 EXTI->PR = EXTI_Line;
000002 6008 STR r0,[r1,#0]
;;;293 }
000004 4770 BX lr
;;;294
ENDP
000006 0000 DCW 0x0000
|L2.8|
DCD 0x40013c14
AREA ||i.EXTI_DeInit||, CODE, READONLY, ALIGN=2
EXTI_DeInit PROC
;;;108 */
;;;109 void EXTI_DeInit(void)
000000 4906 LDR r1,|L3.28|
;;;110 {
;;;111 EXTI->IMR = 0x00000000;
000002 2000 MOVS r0,#0
000004 6008 STR r0,[r1,#0]
;;;112 EXTI->EMR = 0x00000000;
000006 1d09 ADDS r1,r1,#4
000008 6008 STR r0,[r1,#0]
;;;113 EXTI->RTSR = 0x00000000;
00000a 1d09 ADDS r1,r1,#4
00000c 6008 STR r0,[r1,#0]
;;;114 EXTI->FTSR = 0x00000000;
00000e 1d09 ADDS r1,r1,#4
000010 6008 STR r0,[r1,#0]
;;;115 EXTI->PR = 0x007FFFFF;
000012 4902 LDR r1,|L3.28|
000014 4802 LDR r0,|L3.32|
000016 3114 ADDS r1,r1,#0x14
000018 6008 STR r0,[r1,#0]
;;;116 }
00001a 4770 BX lr
;;;117
ENDP
|L3.28|
DCD 0x40013c00
|L3.32|
DCD 0x007fffff
AREA ||i.EXTI_GenerateSWInterrupt||, CODE, READONLY, ALIGN=2
EXTI_GenerateSWInterrupt PROC
;;;195 */
;;;196 void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line)
000000 4902 LDR r1,|L4.12|
;;;197 {
;;;198 /* Check the parameters */
;;;199 assert_param(IS_EXTI_LINE(EXTI_Line));
;;;200
;;;201 EXTI->SWIER |= EXTI_Line;
000002 680a LDR r2,[r1,#0]
000004 4302 ORRS r2,r2,r0
000006 600a STR r2,[r1,#0]
;;;202 }
000008 4770 BX lr
;;;203
ENDP
00000a 0000 DCW 0x0000
|L4.12|
DCD 0x40013c10
AREA ||i.EXTI_GetFlagStatus||, CODE, READONLY, ALIGN=2
EXTI_GetFlagStatus PROC
;;;225 */
;;;226 FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line)
000000 4601 MOV r1,r0
;;;227 {
;;;228 FlagStatus bitstatus = RESET;
000002 2000 MOVS r0,#0
;;;229 /* Check the parameters */
;;;230 assert_param(IS_GET_EXTI_LINE(EXTI_Line));
;;;231
;;;232 if ((EXTI->PR & EXTI_Line) != (uint32_t)RESET)
000004 4a02 LDR r2,|L5.16|
000006 6812 LDR r2,[r2,#0]
000008 420a TST r2,r1
00000a d000 BEQ |L5.14|
;;;233 {
;;;234 bitstatus = SET;
00000c 2001 MOVS r0,#1
|L5.14|
;;;235 }
;;;236 else
;;;237 {
;;;238 bitstatus = RESET;
;;;239 }
;;;240 return bitstatus;
;;;241 }
00000e 4770 BX lr
;;;242
ENDP
|L5.16|
DCD 0x40013c14
AREA ||i.EXTI_GetITStatus||, CODE, READONLY, ALIGN=2
EXTI_GetITStatus PROC
;;;262 */
;;;263 ITStatus EXTI_GetITStatus(uint32_t EXTI_Line)
000000 4601 MOV r1,r0
;;;264 {
;;;265 FlagStatus bitstatus = RESET;
000002 2000 MOVS r0,#0
;;;266 /* Check the parameters */
;;;267 assert_param(IS_GET_EXTI_LINE(EXTI_Line));
;;;268
;;;269 if ((EXTI->PR & EXTI_Line) != (uint32_t)RESET)
000004 4a02 LDR r2,|L6.16|
000006 6812 LDR r2,[r2,#0]
000008 420a TST r2,r1
00000a d000 BEQ |L6.14|
;;;270 {
;;;271 bitstatus = SET;
00000c 2001 MOVS r0,#1
|L6.14|
;;;272 }
;;;273 else
;;;274 {
;;;275 bitstatus = RESET;
;;;276 }
;;;277 return bitstatus;
;;;278
;;;279 }
00000e 4770 BX lr
;;;280
ENDP
|L6.16|
DCD 0x40013c14
AREA ||i.EXTI_Init||, CODE, READONLY, ALIGN=2
EXTI_Init PROC
;;;124 */
;;;125 void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct)
000000 b530 PUSH {r4,r5,lr}
;;;126 {
;;;127 uint32_t tmp = 0;
;;;128
;;;129 /* Check the parameters */
;;;130 assert_param(IS_EXTI_MODE(EXTI_InitStruct->EXTI_Mode));
;;;131 assert_param(IS_EXTI_TRIGGER(EXTI_InitStruct->EXTI_Trigger));
;;;132 assert_param(IS_EXTI_LINE(EXTI_InitStruct->EXTI_Line));
;;;133 assert_param(IS_FUNCTIONAL_STATE(EXTI_InitStruct->EXTI_LineCmd));
;;;134
;;;135 tmp = (uint32_t)EXTI_BASE;
000002 4a1b LDR r2,|L7.112|
;;;136
;;;137 if (EXTI_InitStruct->EXTI_LineCmd != DISABLE)
000004 7983 LDRB r3,[r0,#6]
000006 6801 LDR r1,[r0,#0]
000008 2b00 CMP r3,#0
00000a d02a BEQ |L7.98|
;;;138 {
;;;139 /* Clear EXTI line configuration */
;;;140 EXTI->IMR &= ~EXTI_InitStruct->EXTI_Line;
00000c 6813 LDR r3,[r2,#0]
00000e 438b BICS r3,r3,r1
000010 6013 STR r3,[r2,#0]
;;;141 EXTI->EMR &= ~EXTI_InitStruct->EXTI_Line;
000012 1d11 ADDS r1,r2,#4
000014 680b LDR r3,[r1,#0]
000016 6804 LDR r4,[r0,#0]
000018 43a3 BICS r3,r3,r4
00001a 600b STR r3,[r1,#0]
;;;142
;;;143 tmp += EXTI_InitStruct->EXTI_Mode;
00001c 7901 LDRB r1,[r0,#4]
00001e 4411 ADD r1,r1,r2
;;;144
;;;145 *(__IO uint32_t *) tmp |= EXTI_InitStruct->EXTI_Line;
000020 680b LDR r3,[r1,#0]
000022 6804 LDR r4,[r0,#0]
000024 4323 ORRS r3,r3,r4
000026 600b STR r3,[r1,#0]
;;;146
;;;147 /* Clear Rising Falling edge configuration */
;;;148 EXTI->RTSR &= ~EXTI_InitStruct->EXTI_Line;
000028 4c11 LDR r4,|L7.112|
00002a 3408 ADDS r4,r4,#8
00002c 6821 LDR r1,[r4,#0]
00002e 6803 LDR r3,[r0,#0]
000030 4399 BICS r1,r1,r3
000032 6021 STR r1,[r4,#0]
;;;149 EXTI->FTSR &= ~EXTI_InitStruct->EXTI_Line;
000034 1d23 ADDS r3,r4,#4
000036 6819 LDR r1,[r3,#0]
000038 6805 LDR r5,[r0,#0]
00003a 43a9 BICS r1,r1,r5
00003c 6019 STR r1,[r3,#0]
;;;150
;;;151 /* Select the trigger for the selected external interrupts */
;;;152 if (EXTI_InitStruct->EXTI_Trigger == EXTI_Trigger_Rising_Falling)
00003e 7941 LDRB r1,[r0,#5]
000040 2910 CMP r1,#0x10
000042 d005 BEQ |L7.80|
;;;153 {
;;;154 /* Rising Falling edge */
;;;155 EXTI->RTSR |= EXTI_InitStruct->EXTI_Line;
;;;156 EXTI->FTSR |= EXTI_InitStruct->EXTI_Line;
;;;157 }
;;;158 else
;;;159 {
;;;160 tmp = (uint32_t)EXTI_BASE;
;;;161 tmp += EXTI_InitStruct->EXTI_Trigger;
000044 4411 ADD r1,r1,r2
;;;162
;;;163 *(__IO uint32_t *) tmp |= EXTI_InitStruct->EXTI_Line;
000046 680a LDR r2,[r1,#0]
000048 6800 LDR r0,[r0,#0]
00004a 4302 ORRS r2,r2,r0
00004c 600a STR r2,[r1,#0]
;;;164 }
;;;165 }
;;;166 else
;;;167 {
;;;168 tmp += EXTI_InitStruct->EXTI_Mode;
;;;169
;;;170 /* Disable the selected external lines */
;;;171 *(__IO uint32_t *) tmp &= ~EXTI_InitStruct->EXTI_Line;
;;;172 }
;;;173 }
00004e bd30 POP {r4,r5,pc}
|L7.80|
000050 6821 LDR r1,[r4,#0] ;155
000052 6802 LDR r2,[r0,#0] ;155
000054 4311 ORRS r1,r1,r2 ;155
000056 6021 STR r1,[r4,#0] ;155
000058 6819 LDR r1,[r3,#0] ;156
00005a 6800 LDR r0,[r0,#0] ;156
00005c 4301 ORRS r1,r1,r0 ;156
00005e 6019 STR r1,[r3,#0] ;156
000060 bd30 POP {r4,r5,pc}
|L7.98|
000062 7900 LDRB r0,[r0,#4] ;168
000064 4410 ADD r0,r0,r2 ;168
000066 6802 LDR r2,[r0,#0] ;171
000068 438a BICS r2,r2,r1 ;171
00006a 6002 STR r2,[r0,#0] ;171
00006c bd30 POP {r4,r5,pc}
;;;174
ENDP
00006e 0000 DCW 0x0000
|L7.112|
DCD 0x40013c00
AREA ||i.EXTI_StructInit||, CODE, READONLY, ALIGN=1
EXTI_StructInit PROC
;;;180 */
;;;181 void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct)
000000 2100 MOVS r1,#0
;;;182 {
;;;183 EXTI_InitStruct->EXTI_Line = EXTI_LINENONE;
000002 6001 STR r1,[r0,#0]
;;;184 EXTI_InitStruct->EXTI_Mode = EXTI_Mode_Interrupt;
000004 7101 STRB r1,[r0,#4]
;;;185 EXTI_InitStruct->EXTI_Trigger = EXTI_Trigger_Falling;
000006 220c MOVS r2,#0xc
000008 7142 STRB r2,[r0,#5]
;;;186 EXTI_InitStruct->EXTI_LineCmd = DISABLE;
00000a 7181 STRB r1,[r0,#6]
;;;187 }
00000c 4770 BX lr
;;;188
ENDP
;*** Start embedded assembler ***
#line 1 "..\\..\\Libraries\\STM32F4xx_StdPeriph_Driver\\src\\stm32f4xx_exti.c"
AREA ||.rev16_text||, CODE
THUMB
EXPORT |__asm___16_stm32f4xx_exti_c_28b3b60e____REV16|
#line 129 "..\\..\\Libraries\\CMSIS\\Include\\core_cmInstr.h"
|__asm___16_stm32f4xx_exti_c_28b3b60e____REV16| PROC
#line 130
rev16 r0, r0
bx lr
ENDP
AREA ||.revsh_text||, CODE
THUMB
EXPORT |__asm___16_stm32f4xx_exti_c_28b3b60e____REVSH|
#line 144
|__asm___16_stm32f4xx_exti_c_28b3b60e____REVSH| PROC
#line 145
revsh r0, r0
bx lr
ENDP
AREA ||.rrx_text||, CODE
THUMB
EXPORT |__asm___16_stm32f4xx_exti_c_28b3b60e____RRX|
#line 300
|__asm___16_stm32f4xx_exti_c_28b3b60e____RRX| PROC
#line 301
rrx r0, r0
bx lr
ENDP
;*** End embedded assembler ***