📄 stm32f10x_exti.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 934] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\stm32f10x_exti.o --depend=.\Obj\stm32f10x_exti.d --device=DARMSTM --apcs=interwork -O3 -I..\..\include -I..\..\..\FWLib\library\inc -I..\..\..\USBLib\library\inc -I..\..\SRAM -I"D:\Program Files\MDK KEIL\ARM\INC\ST\STM32F10x" -D__MICROLIB --omf_browse=.\Obj\stm32f10x_exti.crf ..\..\..\FWLib\library\src\stm32f10x_exti.c]
THUMB
AREA ||i.EXTI_DeInit||, CODE, READONLY, ALIGN=2
EXTI_DeInit PROC
;;;37 {
;;;38 EXTI->IMR = 0x00000000;
000000 4804 LDR r0,|L1.20|
000002 2100 MOVS r1,#0
000004 6001 STR r1,[r0,#0]
;;;39 EXTI->EMR = 0x00000000;
000006 6041 STR r1,[r0,#4]
;;;40 EXTI->RTSR = 0x00000000;
000008 6081 STR r1,[r0,#8]
;;;41 EXTI->FTSR = 0x00000000;
00000a 60c1 STR r1,[r0,#0xc]
;;;42 EXTI->PR = 0x0007FFFF;
00000c 4902 LDR r1,|L1.24|
00000e 6141 STR r1,[r0,#0x14]
;;;43 }
000010 4770 BX lr
;;;44
ENDP
000012 0000 DCW 0x0000
|L1.20|
000014 40010400 DCD 0x40010400
|L1.24|
000018 0007ffff DCD 0x0007ffff
AREA ||i.EXTI_Init||, CODE, READONLY, ALIGN=2
EXTI_Init PROC
;;;55 void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct)
;;;56 {
000000 b510 PUSH {r4,lr}
;;;57 /* Check the parameters */
;;;58 assert_param(IS_EXTI_MODE(EXTI_InitStruct->EXTI_Mode));
;;;59 assert_param(IS_EXTI_TRIGGER(EXTI_InitStruct->EXTI_Trigger));
;;;60 assert_param(IS_EXTI_LINE(EXTI_InitStruct->EXTI_Line));
;;;61 assert_param(IS_FUNCTIONAL_STATE(EXTI_InitStruct->EXTI_LineCmd));
;;;62
;;;63 if (EXTI_InitStruct->EXTI_LineCmd != DISABLE)
000002 7983 LDRB r3,[r0,#6]
000004 4920 LDR r1,|L2.136|
000006 6802 LDR r2,[r0,#0]
000008 b3a3 CBZ r3,|L2.116|
;;;64 {
;;;65 /* Clear EXTI line configuration */
;;;66 EXTI->IMR &= ~EXTI_InitStruct->EXTI_Line;
00000a f8d1f8d1 LDR r3,[r1,#0x400]
00000e 4393 BICS r3,r3,r2
000010 f8c1f8c1 STR r3,[r1,#0x400]
;;;67 EXTI->EMR &= ~EXTI_InitStruct->EXTI_Line;
000014 f8d1f8d1 LDR r2,[r1,#0x404]
000018 6803 LDR r3,[r0,#0]
00001a 439a BICS r2,r2,r3
00001c f8c1f8c1 STR r2,[r1,#0x404]
;;;68
;;;69 *(vu32 *)(EXTI_BASE + (u32)EXTI_InitStruct->EXTI_Mode)|= EXTI_InitStruct->EXTI_Line;
000020 7902 LDRB r2,[r0,#4]
000022 6804 LDR r4,[r0,#0]
000024 440a ADD r2,r2,r1
000026 f8d2f8d2 LDR r3,[r2,#0x400]
00002a 4323 ORRS r3,r3,r4
00002c f8c2f8c2 STR r3,[r2,#0x400]
;;;70
;;;71 /* Clear Rising Falling edge configuration */
;;;72 EXTI->RTSR &= ~EXTI_InitStruct->EXTI_Line;
000030 f8d1f8d1 LDR r2,[r1,#0x408]
000034 6803 LDR r3,[r0,#0]
000036 439a BICS r2,r2,r3
000038 f8c1f8c1 STR r2,[r1,#0x408]
;;;73 EXTI->FTSR &= ~EXTI_InitStruct->EXTI_Line;
00003c f8d1f8d1 LDR r2,[r1,#0x40c]
000040 6803 LDR r3,[r0,#0]
000042 439a BICS r2,r2,r3
000044 f8c1f8c1 STR r2,[r1,#0x40c]
;;;74
;;;75 /* Select the trigger for the selected external interrupts */
;;;76 if (EXTI_InitStruct->EXTI_Trigger == EXTI_Trigger_Rising_Falling)
000048 7942 LDRB r2,[r0,#5]
00004a 2a10 CMP r2,#0x10
00004c d10a BNE |L2.100|
00004e f501f501 ADD r1,r1,#0x408
;;;77 {
;;;78 /* Rising Falling edge */
;;;79 EXTI->RTSR |= EXTI_InitStruct->EXTI_Line;
000052 680a LDR r2,[r1,#0]
000054 6803 LDR r3,[r0,#0]
000056 431a ORRS r2,r2,r3
000058 600a STR r2,[r1,#0]
;;;80 EXTI->FTSR |= EXTI_InitStruct->EXTI_Line;
00005a 684a LDR r2,[r1,#4]
00005c 6800 LDR r0,[r0,#0]
00005e 4302 ORRS r2,r2,r0
000060 604a STR r2,[r1,#4]
;;;81 }
;;;82 else
;;;83 {
;;;84 *(vu32 *)(EXTI_BASE + (u32)EXTI_InitStruct->EXTI_Trigger)|= EXTI_InitStruct->EXTI_Line;
;;;85 }
;;;86 }
;;;87 else
;;;88 {
;;;89 /* Disable the selected external lines */
;;;90 *(vu32 *)(EXTI_BASE + (u32)EXTI_InitStruct->EXTI_Mode)&= ~EXTI_InitStruct->EXTI_Line;
;;;91 }
;;;92 }
000062 bd10 POP {r4,pc}
|L2.100|
000064 4411 ADD r1,r1,r2 ;84
000066 f8d1f8d1 LDR r2,[r1,#0x400] ;84
00006a 6800 LDR r0,[r0,#0] ;84
00006c 4302 ORRS r2,r2,r0 ;84
00006e f8c1f8c1 STR r2,[r1,#0x400] ;84
|L2.114|
000072 bd10 POP {r4,pc}
|L2.116|
000074 e7ff B |L2.118|
|L2.118|
000076 7900 LDRB r0,[r0,#4] ;90
000078 4408 ADD r0,r0,r1 ;90
00007a f8d0f8d0 LDR r1,[r0,#0x400] ;90
00007e 4391 BICS r1,r1,r2 ;90
000080 f8c0f8c0 STR r1,[r0,#0x400] ;90
000084 e7f5 B |L2.114|
;;;93
ENDP
000086 0000 DCW 0x0000
|L2.136|
000088 40010000 DCD 0x40010000
AREA ||i.EXTI_StructInit||, CODE, READONLY, ALIGN=1
EXTI_StructInit PROC
;;;103 {
;;;104 EXTI_InitStruct->EXTI_Line = EXTI_LineNone;
000000 2100 MOVS r1,#0
;;;105 EXTI_InitStruct->EXTI_Mode = EXTI_Mode_Interrupt;
000002 6001 STR r1,[r0,#0]
000004 7101 STRB r1,[r0,#4]
;;;106 EXTI_InitStruct->EXTI_Trigger = EXTI_Trigger_Falling;
000006 220c MOVS r2,#0xc
000008 7142 STRB r2,[r0,#5]
;;;107 EXTI_InitStruct->EXTI_LineCmd = DISABLE;
00000a 7181 STRB r1,[r0,#6]
;;;108 }
00000c 4770 BX lr
;;;109
ENDP
AREA ||i.EXTI_GenerateSWInterrupt||, CODE, READONLY, ALIGN=2
EXTI_GenerateSWInterrupt PROC
;;;120 void EXTI_GenerateSWInterrupt(u32 EXTI_Line)
;;;121 {
000000 4902 LDR r1,|L4.12|
;;;122 /* Check the parameters */
;;;123 assert_param(IS_EXTI_LINE(EXTI_Line));
;;;124
;;;125 EXTI->SWIER |= EXTI_Line;
000002 680a LDR r2,[r1,#0]
000004 4302 ORRS r2,r2,r0
000006 600a STR r2,[r1,#0]
;;;126 }
000008 4770 BX lr
;;;127
ENDP
00000a 0000 DCW 0x0000
|L4.12|
00000c 40010410 DCD 0x40010410
AREA ||i.EXTI_GetFlagStatus||, CODE, READONLY, ALIGN=2
EXTI_GetFlagStatus PROC
;;;138 {
;;;139 FlagStatus bitstatus = RESET;
000000 4903 LDR r1,|L5.16|
000002 4602 MOV r2,r0 ;138
;;;140
;;;141 /* Check the parameters */
;;;142 assert_param(IS_GET_EXTI_LINE(EXTI_Line));
;;;143
;;;144 if ((EXTI->PR & EXTI_Line) != (u32)RESET)
000004 6809 LDR r1,[r1,#0]
000006 2000 MOVS r0,#0 ;139
000008 4211 TST r1,r2
00000a d000 BEQ |L5.14|
;;;145 {
;;;146 bitstatus = SET;
00000c 2001 MOVS r0,#1
|L5.14|
;;;147 }
;;;148 else
;;;149 {
;;;150 bitstatus = RESET;
;;;151 }
;;;152 return bitstatus;
;;;153 }
00000e 4770 BX lr
;;;154
ENDP
|L5.16|
000010 40010414 DCD 0x40010414
AREA ||i.EXTI_ClearFlag||, CODE, READONLY, ALIGN=2
EXTI_ClearFlag PROC
;;;164 void EXTI_ClearFlag(u32 EXTI_Line)
;;;165 {
000000 4901 LDR r1,|L6.8|
;;;166 /* Check the parameters */
;;;167 assert_param(IS_EXTI_LINE(EXTI_Line));
;;;168
;;;169 EXTI->PR = EXTI_Line;
000002 6008 STR r0,[r1,#0]
;;;170 }
000004 4770 BX lr
;;;171
ENDP
000006 0000 DCW 0x0000
|L6.8|
000008 40010414 DCD 0x40010414
AREA ||i.EXTI_GetITStatus||, CODE, READONLY, ALIGN=2
EXTI_GetITStatus PROC
;;;182 {
;;;183 ITStatus bitstatus = RESET;
000000 4b05 LDR r3,|L7.24|
000002 4601 MOV r1,r0 ;182
;;;184 u32 enablestatus = 0;
;;;185
;;;186 /* Check the parameters */
;;;187 assert_param(IS_GET_EXTI_LINE(EXTI_Line));
;;;188
;;;189 enablestatus = EXTI->IMR & EXTI_Line;
000004 681a LDR r2,[r3,#0]
000006 2000 MOVS r0,#0 ;183
;;;190
;;;191 if (((EXTI->PR & EXTI_Line) != (u32)RESET) && (enablestatus != (u32)RESET))
000008 695b LDR r3,[r3,#0x14]
00000a 400a ANDS r2,r2,r1 ;189
00000c 420b TST r3,r1
00000e d002 BEQ |L7.22|
000010 2a00 CMP r2,#0
000012 d000 BEQ |L7.22|
;;;192 {
;;;193 bitstatus = SET;
000014 2001 MOVS r0,#1
|L7.22|
;;;194 }
;;;195 else
;;;196 {
;;;197 bitstatus = RESET;
;;;198 }
;;;199 return bitstatus;
;;;200 }
000016 4770 BX lr
;;;201
ENDP
|L7.24|
000018 40010400 DCD 0x40010400
AREA ||i.EXTI_ClearITPendingBit||, CODE, READONLY, ALIGN=2
EXTI_ClearITPendingBit PROC
;;;211 void EXTI_ClearITPendingBit(u32 EXTI_Line)
;;;212 {
000000 4901 LDR r1,|L8.8|
;;;213 /* Check the parameters */
;;;214 assert_param(IS_EXTI_LINE(EXTI_Line));
;;;215
;;;216 EXTI->PR = EXTI_Line;
000002 6008 STR r0,[r1,#0]
;;;217 }
000004 4770 BX lr
;;;218
ENDP
000006 0000 DCW 0x0000
|L8.8|
000008 40010414 DCD 0x40010414
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -