📄 stm32f10x_exti.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 919] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o..\obj\stm32f10x_exti.o --depend=..\obj\stm32f10x_exti.d --device=DARMSTM --apcs=interwork -O0 -I..\..\LAB5 -I..\..\library\inc -IC:\Keil\ARM\INC\ST\STM32F10x -DVECT_TAB_RAM --omf_browse=..\obj\stm32f10x_exti.crf ..\..\library\src\stm32f10x_exti.c]
THUMB
AREA ||.text||, CODE, READONLY, ALIGN=2
EXTI_DeInit PROC
;;;42 {
;;;43 EXTI->IMR = 0x00000000;
000000 2000 MOVS r0,#0
000002 4948 LDR r1,|L1.292|
000004 6008 STR r0,[r1,#0]
;;;44 EXTI->EMR = 0x00000000;
000006 4948 LDR r1,|L1.296|
000008 f8c1f8c1 STR r0,[r1,#0x404]
;;;45 EXTI->RTSR = 0x00000000;
00000c 4945 LDR r1,|L1.292|
00000e 3108 ADDS r1,r1,#8
000010 6008 STR r0,[r1,#0]
;;;46 EXTI->FTSR = 0x00000000;
000012 1d09 ADDS r1,r1,#4
000014 6008 STR r0,[r1,#0]
;;;47 EXTI->PR = 0x0007FFFF;
000016 4845 LDR r0,|L1.300|
000018 4942 LDR r1,|L1.292|
00001a 3114 ADDS r1,r1,#0x14
00001c 6008 STR r0,[r1,#0]
;;;48 }
00001e 4770 BX lr
;;;49
ENDP
EXTI_Init PROC
;;;67
;;;68 if (EXTI_InitStruct->EXTI_LineCmd != DISABLE)
000020 7981 LDRB r1,[r0,#6]
000022 b379 CBZ r1,|L1.132|
;;;69 {
;;;70 *(u32 *)(EXTI_BASE + (u32)EXTI_InitStruct->EXTI_Mode)|= EXTI_InitStruct->EXTI_Line;
000024 7901 LDRB r1,[r0,#4]
000026 4a40 LDR r2,|L1.296|
000028 4411 ADD r1,r1,r2
00002a f8d1f8d1 LDR r1,[r1,#0x400]
00002e 6802 LDR r2,[r0,#0]
000030 4311 ORRS r1,r1,r2
000032 7902 LDRB r2,[r0,#4]
000034 4b3c LDR r3,|L1.296|
000036 441a ADD r2,r2,r3
000038 f8c2f8c2 STR r1,[r2,#0x400]
;;;71
;;;72 /* Clear Rising Falling edge configuration */
;;;73 EXTI->RTSR &= ~EXTI_InitStruct->EXTI_Line;
00003c 4619 MOV r1,r3
00003e f8d1f8d1 LDR r1,[r1,#0x408]
000042 6802 LDR r2,[r0,#0]
000044 4391 BICS r1,r1,r2
000046 461a MOV r2,r3
000048 f8c2f8c2 STR r1,[r2,#0x408]
;;;74 EXTI->FTSR &= ~EXTI_InitStruct->EXTI_Line;
00004c 4611 MOV r1,r2
00004e f8d1f8d1 LDR r1,[r1,#0x40c]
000052 6802 LDR r2,[r0,#0]
000054 4391 BICS r1,r1,r2
000056 4a33 LDR r2,|L1.292|
000058 320c ADDS r2,r2,#0xc
00005a 6011 STR r1,[r2,#0]
;;;75
;;;76 /* Select the trigger for the selected external interrupts */
;;;77 if (EXTI_InitStruct->EXTI_Trigger == EXTI_Trigger_Rising_Falling)
00005c 7941 LDRB r1,[r0,#5]
00005e 2910 CMP r1,#0x10
000060 d111 BNE |L1.134|
;;;78 {
;;;79 /* Rising Falling edge */
;;;80 EXTI->RTSR |= EXTI_InitStruct->EXTI_Line;
000062 4931 LDR r1,|L1.296|
000064 f8d1f8d1 LDR r1,[r1,#0x408]
000068 6802 LDR r2,[r0,#0]
00006a 4311 ORRS r1,r1,r2
00006c 4a2e LDR r2,|L1.296|
00006e f8c2f8c2 STR r1,[r2,#0x408]
;;;81 EXTI->FTSR |= EXTI_InitStruct->EXTI_Line;
000072 4611 MOV r1,r2
000074 f8d1f8d1 LDR r1,[r1,#0x40c]
000078 6802 LDR r2,[r0,#0]
00007a 4311 ORRS r1,r1,r2
00007c 4a2a LDR r2,|L1.296|
00007e f8c2f8c2 STR r1,[r2,#0x40c]
000082 e019 B |L1.184|
|L1.132|
000084 e00c B |L1.160|
|L1.134|
;;;82 }
;;;83 else
;;;84 {
;;;85 *(u32 *)(EXTI_BASE + (u32)EXTI_InitStruct->EXTI_Trigger)|= EXTI_InitStruct->EXTI_Line;
000086 7941 LDRB r1,[r0,#5]
000088 4a27 LDR r2,|L1.296|
00008a 4411 ADD r1,r1,r2
00008c f8d1f8d1 LDR r1,[r1,#0x400]
000090 6802 LDR r2,[r0,#0]
000092 4311 ORRS r1,r1,r2
000094 7942 LDRB r2,[r0,#5]
000096 4b24 LDR r3,|L1.296|
000098 441a ADD r2,r2,r3
00009a f8c2f8c2 STR r1,[r2,#0x400]
00009e e00b B |L1.184|
|L1.160|
;;;86 }
;;;87 }
;;;88 else
;;;89 {
;;;90 /* Disable the selected external lines */
;;;91 *(u32 *)(EXTI_BASE + (u32)EXTI_InitStruct->EXTI_Mode)&= ~EXTI_InitStruct->EXTI_Line;
0000a0 7901 LDRB r1,[r0,#4]
0000a2 4a21 LDR r2,|L1.296|
0000a4 4411 ADD r1,r1,r2
0000a6 f8d1f8d1 LDR r1,[r1,#0x400]
0000aa 6802 LDR r2,[r0,#0]
0000ac 4391 BICS r1,r1,r2
0000ae 7902 LDRB r2,[r0,#4]
0000b0 4b1d LDR r3,|L1.296|
0000b2 441a ADD r2,r2,r3
0000b4 f8c2f8c2 STR r1,[r2,#0x400]
|L1.184|
;;;92 }
;;;93 }
0000b8 4770 BX lr
;;;94
ENDP
EXTI_StructInit PROC
;;;104 {
;;;105 EXTI_InitStruct->EXTI_Line = EXTI_LineNone;
0000ba 2100 MOVS r1,#0
0000bc 6001 STR r1,[r0,#0]
;;;106 EXTI_InitStruct->EXTI_Mode = EXTI_Mode_Interrupt;
0000be 7101 STRB r1,[r0,#4]
;;;107 EXTI_InitStruct->EXTI_Trigger = EXTI_Trigger_Falling;
0000c0 210c MOVS r1,#0xc
0000c2 7141 STRB r1,[r0,#5]
;;;108 EXTI_InitStruct->EXTI_LineCmd = DISABLE;
0000c4 2100 MOVS r1,#0
0000c6 7181 STRB r1,[r0,#6]
;;;109 }
0000c8 4770 BX lr
;;;110
ENDP
EXTI_GenerateSWInterrupt PROC
;;;125
;;;126 EXTI->SWIER |= EXTI_Line;
0000ca 4916 LDR r1,|L1.292|
0000cc 3110 ADDS r1,r1,#0x10
0000ce 6809 LDR r1,[r1,#0]
0000d0 4301 ORRS r1,r1,r0
0000d2 4a15 LDR r2,|L1.296|
0000d4 f8c2f8c2 STR r1,[r2,#0x410]
;;;127 }
0000d8 4770 BX lr
;;;128
ENDP
EXTI_GetFlagStatus PROC
;;;138 FlagStatus EXTI_GetFlagStatus(u32 EXTI_Line)
;;;139 {
0000da 4601 MOV r1,r0
;;;140 FlagStatus bitstatus = RESET;
0000dc 2000 MOVS r0,#0
;;;141
;;;142 /* Check the parameters */
;;;143 assert(IS_GET_EXTI_LINE(EXTI_Line));
;;;144
;;;145 if ((EXTI->PR & EXTI_Line) != (u32)RESET)
0000de 4a11 LDR r2,|L1.292|
0000e0 3214 ADDS r2,r2,#0x14
0000e2 6812 LDR r2,[r2,#0]
0000e4 420a TST r2,r1
0000e6 d001 BEQ |L1.236|
;;;146 {
;;;147 bitstatus = SET;
0000e8 2001 MOVS r0,#1
0000ea e000 B |L1.238|
|L1.236|
;;;148 }
;;;149 else
;;;150 {
;;;151 bitstatus = RESET;
0000ec 2000 MOVS r0,#0
|L1.238|
;;;152 }
;;;153 return bitstatus;
;;;154 }
0000ee 4770 BX lr
;;;155
ENDP
EXTI_ClearFlag PROC
;;;169
;;;170 EXTI->PR = EXTI_Line;
0000f0 490c LDR r1,|L1.292|
0000f2 3114 ADDS r1,r1,#0x14
0000f4 6008 STR r0,[r1,#0]
;;;171 }
0000f6 4770 BX lr
;;;172
ENDP
EXTI_GetITStatus PROC
;;;182 ITStatus EXTI_GetITStatus(u32 EXTI_Line)
;;;183 {
0000f8 4601 MOV r1,r0
;;;184 ITStatus bitstatus = RESET;
0000fa 2000 MOVS r0,#0
;;;185 u32 enablestatus = 0;
0000fc 2200 MOVS r2,#0
;;;186
;;;187 /* Check the parameters */
;;;188 assert(IS_GET_EXTI_LINE(EXTI_Line));
;;;189
;;;190 enablestatus = EXTI->IMR & EXTI_Line;
0000fe 4b09 LDR r3,|L1.292|
000100 681b LDR r3,[r3,#0]
000102 ea03ea03 AND r2,r3,r1
;;;191
;;;192 if (((EXTI->PR & EXTI_Line) != (u32)RESET) && enablestatus)
000106 4b08 LDR r3,|L1.296|
000108 f8d3f8d3 LDR r3,[r3,#0x414]
00010c 420b TST r3,r1
00010e d002 BEQ |L1.278|
000110 b10a CBZ r2,|L1.278|
;;;193 {
;;;194 bitstatus = SET;
000112 2001 MOVS r0,#1
000114 e000 B |L1.280|
|L1.278|
;;;195 }
;;;196 else
;;;197 {
;;;198 bitstatus = RESET;
000116 2000 MOVS r0,#0
|L1.280|
;;;199 }
;;;200 return bitstatus;
;;;201 }
000118 4770 BX lr
;;;202
ENDP
EXTI_ClearITPendingBit PROC
;;;216
;;;217 EXTI->PR = EXTI_Line;
00011a 4902 LDR r1,|L1.292|
00011c 3114 ADDS r1,r1,#0x14
00011e 6008 STR r0,[r1,#0]
;;;218 }
000120 4770 BX lr
;;;219
ENDP
000122 0000 DCW 0x0000
|L1.292|
000124 40010400 DCD 0x40010400
|L1.296|
000128 40010000 DCD 0x40010000
|L1.300|
00012c 0007ffff DCD 0x0007ffff
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -