📄 stm32f10x_exti.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] 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..\..\Config -I..\..\GUI\Core -I..\..\GUI\Font -I..\..\GUI\ConvertColor -I..\..\GUI\AntiAlias -I..\..\GUI\ConvertMono -I..\..\GUI\JPEG -I..\..\GUI\MemDev -I..\..\GUI\MultiLayer -I..\..\GUI\Widget -I..\..\GUI\WM -IC:\Keil\ARM\INC\ST\STM32F10x ..\..\..\FWLib\library\src\stm32f10x_exti.c]
THUMB
AREA ||i.EXTI_ClearFlag||, CODE, READONLY, ALIGN=2
EXTI_ClearFlag PROC
;;;163 *******************************************************************************/
;;;164 void EXTI_ClearFlag(u32 EXTI_Line)
000000 4901 LDR r1,|L1.8|
;;;165 {
;;;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
|L1.8|
DCD 0x40010414
AREA ||i.EXTI_ClearITPendingBit||, CODE, READONLY, ALIGN=2
EXTI_ClearITPendingBit PROC
;;;210 *******************************************************************************/
;;;211 void EXTI_ClearITPendingBit(u32 EXTI_Line)
000000 4901 LDR r1,|L2.8|
;;;212 {
;;;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
|L2.8|
DCD 0x40010414
AREA ||i.EXTI_DeInit||, CODE, READONLY, ALIGN=2
EXTI_DeInit PROC
;;;35 *******************************************************************************/
;;;36 void EXTI_DeInit(void)
000000 4804 LDR r0,|L3.20|
;;;37 {
;;;38 EXTI->IMR = 0x00000000;
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,|L3.24|
00000e 6141 STR r1,[r0,#0x14]
;;;43 }
000010 4770 BX lr
;;;44
ENDP
000012 0000 DCW 0x0000
|L3.20|
DCD 0x40010400
|L3.24|
DCD 0x0007ffff
AREA ||i.EXTI_GenerateSWInterrupt||, CODE, READONLY, ALIGN=2
EXTI_GenerateSWInterrupt PROC
;;;119 *******************************************************************************/
;;;120 void EXTI_GenerateSWInterrupt(u32 EXTI_Line)
000000 4902 LDR r1,|L4.12|
;;;121 {
;;;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|
DCD 0x40010410
AREA ||i.EXTI_GetFlagStatus||, CODE, READONLY, ALIGN=2
EXTI_GetFlagStatus PROC
;;;136 *******************************************************************************/
;;;137 FlagStatus EXTI_GetFlagStatus(u32 EXTI_Line)
000000 4903 LDR r1,|L5.16|
;;;138 {
000002 4602 MOV r2,r0
;;;139 FlagStatus bitstatus = RESET;
;;;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|
DCD 0x40010414
AREA ||i.EXTI_GetITStatus||, CODE, READONLY, ALIGN=2
EXTI_GetITStatus PROC
;;;180 *******************************************************************************/
;;;181 ITStatus EXTI_GetITStatus(u32 EXTI_Line)
000000 4b05 LDR r3,|L6.24|
;;;182 {
000002 4601 MOV r1,r0
;;;183 ITStatus bitstatus = RESET;
;;;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 |L6.22|
000010 2a00 CMP r2,#0
000012 d000 BEQ |L6.22|
;;;192 {
;;;193 bitstatus = SET;
000014 2001 MOVS r0,#1
|L6.22|
;;;194 }
;;;195 else
;;;196 {
;;;197 bitstatus = RESET;
;;;198 }
;;;199 return bitstatus;
;;;200 }
000016 4770 BX lr
;;;201
ENDP
|L6.24|
DCD 0x40010400
AREA ||i.EXTI_Init||, CODE, READONLY, ALIGN=2
EXTI_Init PROC
;;;54 *******************************************************************************/
;;;55 void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct)
000000 b510 PUSH {r4,lr}
;;;56 {
;;;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]
;;;64 {
;;;65 /* Clear EXTI line configuration */
;;;66 EXTI->IMR &= ~EXTI_InitStruct->EXTI_Line;
000004 4920 LDR r1,|L7.136|
000006 6802 LDR r2,[r0,#0] ;63
000008 b3a3 CBZ r3,|L7.116|
00000a f8d13400 LDR r3,[r1,#0x400]
00000e 4393 BICS r3,r3,r2
000010 f8c13400 STR r3,[r1,#0x400]
;;;67 EXTI->EMR &= ~EXTI_InitStruct->EXTI_Line;
000014 f8d12404 LDR r2,[r1,#0x404]
000018 6803 LDR r3,[r0,#0]
00001a 439a BICS r2,r2,r3
00001c f8c12404 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 f8d23400 LDR r3,[r2,#0x400]
00002a 4323 ORRS r3,r3,r4
00002c f8c23400 STR r3,[r2,#0x400]
;;;70
;;;71 /* Clear Rising Falling edge configuration */
;;;72 EXTI->RTSR &= ~EXTI_InitStruct->EXTI_Line;
000030 f8d12408 LDR r2,[r1,#0x408]
000034 6803 LDR r3,[r0,#0]
000036 439a BICS r2,r2,r3
000038 f8c12408 STR r2,[r1,#0x408]
;;;73 EXTI->FTSR &= ~EXTI_InitStruct->EXTI_Line;
00003c f8d1240c LDR r2,[r1,#0x40c]
000040 6803 LDR r3,[r0,#0]
000042 439a BICS r2,r2,r3
000044 f8c1240c 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 |L7.100|
00004e f5016181 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}
|L7.100|
000064 4411 ADD r1,r1,r2 ;84
000066 f8d12400 LDR r2,[r1,#0x400] ;84
00006a 6800 LDR r0,[r0,#0] ;84
00006c 4302 ORRS r2,r2,r0 ;84
00006e f8c12400 STR r2,[r1,#0x400] ;84
|L7.114|
000072 bd10 POP {r4,pc}
|L7.116|
000074 e7ff B |L7.118|
|L7.118|
000076 7900 LDRB r0,[r0,#4] ;90
000078 4408 ADD r0,r0,r1 ;90
00007a f8d01400 LDR r1,[r0,#0x400] ;90
00007e 4391 BICS r1,r1,r2 ;90
000080 f8c01400 STR r1,[r0,#0x400] ;90
000084 e7f5 B |L7.114|
;;;93
ENDP
000086 0000 DCW 0x0000
|L7.136|
DCD 0x40010000
AREA ||i.EXTI_StructInit||, CODE, READONLY, ALIGN=1
EXTI_StructInit PROC
;;;101 *******************************************************************************/
;;;102 void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct)
000000 2100 MOVS r1,#0
;;;103 {
;;;104 EXTI_InitStruct->EXTI_Line = EXTI_LineNone;
;;;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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -