📄 stm32f10x_exti.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with Crescent Bay VAST 10.7u+w+:x ARM NEON, RVCT3.1 [Build 903] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o..\obj\stm32f10x_exti.o --depend=..\obj\stm32f10x_exti.d --device=DARMSTM -O3 -Otime -I..\..\LAB6 -I..\..\library\inc -IC:\Keil\ARM\INC\ST\STM32F10x -DVECT_TAB_FLASH --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 4835 LDR r0,|L1.216|
000002 2100 MOVS r1,#0
000004 6001 STR r1,[r0,#0]
;;;44 EXTI->EMR = 0x00000000;
000006 6041 STR r1,[r0,#4]
;;;45 EXTI->RTSR = 0x00000000;
000008 6081 STR r1,[r0,#8]
;;;46 EXTI->FTSR = 0x00000000;
00000a 60c1 STR r1,[r0,#0xc]
;;;47 EXTI->PR = 0x0007FFFF;
00000c 4933 LDR r1,|L1.220|
00000e 6141 STR r1,[r0,#0x14]
;;;48 }
000010 4770 BX lr
ENDP
EXTI_Init PROC
;;;67
;;;68 if (EXTI_InitStruct->EXTI_LineCmd != DISABLE)
000012 7982 LDRB r2,[r0,#6]
000014 7903 LDRB r3,[r0,#4]
000016 2a00 CMP r2,#0
000018 f103f103 ADD r2,r3,#0x40000000
00001c f502f502 ADD r2,r2,#0x10000
000020 6801 LDR r1,[r0,#0]
000022 f8d2f8d2 LDR r3,[r2,#0x400]
;;;69 {
;;;70 *(u32 *)(EXTI_BASE + (u32)EXTI_InitStruct->EXTI_Mode)|= EXTI_InitStruct->EXTI_Line;
;;;71
;;;72 /* Clear Rising Falling edge configuration */
;;;73 EXTI->RTSR &= ~EXTI_InitStruct->EXTI_Line;
;;;74 EXTI->FTSR &= ~EXTI_InitStruct->EXTI_Line;
;;;75
;;;76 /* Select the trigger for the selected external interrupts */
;;;77 if (EXTI_InitStruct->EXTI_Trigger == EXTI_Trigger_Rising_Falling)
;;;78 {
;;;79 /* Rising Falling edge */
;;;80 EXTI->RTSR |= EXTI_InitStruct->EXTI_Line;
;;;81 EXTI->FTSR |= EXTI_InitStruct->EXTI_Line;
;;;82 }
;;;83 else
;;;84 {
;;;85 *(u32 *)(EXTI_BASE + (u32)EXTI_InitStruct->EXTI_Trigger)|= EXTI_InitStruct->EXTI_Line;
;;;86 }
;;;87 }
;;;88 else
;;;89 {
;;;90 /* Disable the selected external lines */
;;;91 *(u32 *)(EXTI_BASE + (u32)EXTI_InitStruct->EXTI_Mode)&= ~EXTI_InitStruct->EXTI_Line;
000026 bf02 ITTT EQ
000028 ea23ea23 BICEQ r0,r3,r1
00002c f8c2f8c2 STREQ r0,[r2,#0x400]
;;;92 }
;;;93 }
000030 4770 BXEQ lr
000032 4319 ORRS r1,r1,r3
000034 f8c2f8c2 STR r1,[r2,#0x400]
000038 4a29 LDR r2,|L1.224|
00003a f8d2f8d2 LDR r1,[r2,#0x408]
00003e 6803 LDR r3,[r0,#0]
000040 4399 BICS r1,r1,r3
000042 f8c2f8c2 STR r1,[r2,#0x408]
000046 f8d2f8d2 LDR r1,[r2,#0x40c]
00004a 6803 LDR r3,[r0,#0]
00004c 4399 BICS r1,r1,r3
00004e f8c2f8c2 STR r1,[r2,#0x40c]
000052 7941 LDRB r1,[r0,#5]
000054 2910 CMP r1,#0x10
000056 d10c BNE |L1.114|
000058 f8d2f8d2 LDR r1,[r2,#0x408]
00005c 6803 LDR r3,[r0,#0]
00005e 4319 ORRS r1,r1,r3
000060 f8c2f8c2 STR r1,[r2,#0x408]
000064 f8d2f8d2 LDR r1,[r2,#0x40c]
000068 6800 LDR r0,[r0,#0]
00006a 4308 ORRS r0,r0,r1
00006c f8c2f8c2 STR r0,[r2,#0x40c]
000070 4770 BX lr
|L1.114|
000072 f101f101 ADD r1,r1,#0x40000000
000076 f501f501 ADD r1,r1,#0x10000
00007a f8d1f8d1 LDR r2,[r1,#0x400]
00007e 6800 LDR r0,[r0,#0]
000080 4310 ORRS r0,r0,r2
000082 f8c1f8c1 STR r0,[r1,#0x400]
000086 4770 BX lr
ENDP
EXTI_StructInit PROC
;;;104 {
;;;105 EXTI_InitStruct->EXTI_Line = EXTI_LineNone;
000088 2100 MOVS r1,#0
;;;106 EXTI_InitStruct->EXTI_Mode = EXTI_Mode_Interrupt;
00008a 6001 STR r1,[r0,#0]
00008c 7101 STRB r1,[r0,#4]
;;;107 EXTI_InitStruct->EXTI_Trigger = EXTI_Trigger_Falling;
00008e 220c MOVS r2,#0xc
000090 7142 STRB r2,[r0,#5]
;;;108 EXTI_InitStruct->EXTI_LineCmd = DISABLE;
000092 7181 STRB r1,[r0,#6]
;;;109 }
000094 4770 BX lr
ENDP
EXTI_GenerateSWInterrupt PROC
;;;121 void EXTI_GenerateSWInterrupt(u32 EXTI_Line)
;;;122 {
000096 4913 LDR r1,|L1.228|
;;;123 /* Check the parameters */
;;;124 assert(IS_EXTI_LINE(EXTI_Line));
;;;125
;;;126 EXTI->SWIER |= EXTI_Line;
000098 680a LDR r2,[r1,#0]
00009a 4310 ORRS r0,r0,r2
00009c 6008 STR r0,[r1,#0]
;;;127 }
00009e 4770 BX lr
ENDP
EXTI_GetFlagStatus PROC
;;;139 {
;;;140 FlagStatus bitstatus = RESET;
0000a0 4a11 LDR r2,|L1.232|
0000a2 4601 MOV r1,r0
;;;141
;;;142 /* Check the parameters */
;;;143 assert(IS_GET_EXTI_LINE(EXTI_Line));
;;;144
;;;145 if ((EXTI->PR & EXTI_Line) != (u32)RESET)
0000a4 6812 LDR r2,[r2,#0]
0000a6 2000 MOVS r0,#0
0000a8 420a TST r2,r1
;;;146 {
;;;147 bitstatus = SET;
0000aa bf18 IT NE
0000ac 2001 MOVNE r0,#1
;;;148 }
;;;149 else
;;;150 {
;;;151 bitstatus = RESET;
;;;152 }
;;;153 return bitstatus;
;;;154 }
0000ae 4770 BX lr
ENDP
EXTI_ClearFlag PROC
;;;165 void EXTI_ClearFlag(u32 EXTI_Line)
;;;166 {
0000b0 490d LDR r1,|L1.232|
;;;167 /* Check the parameters */
;;;168 assert(IS_EXTI_LINE(EXTI_Line));
;;;169
;;;170 EXTI->PR = EXTI_Line;
0000b2 6008 STR r0,[r1,#0]
;;;171 }
0000b4 4770 BX lr
ENDP
EXTI_GetITStatus PROC
;;;189
;;;190 enablestatus = EXTI->IMR & EXTI_Line;
0000b6 4a0a LDR r2,|L1.224|
0000b8 2100 MOVS r1,#0
0000ba f8d2f8d2 LDR r12,[r2,#0x400]
;;;191
;;;192 if (((EXTI->PR & EXTI_Line) != (u32)RESET) && enablestatus)
0000be f8d2f8d2 LDR r3,[r2,#0x414]
0000c2 ea0cea0c AND r2,r12,r0
0000c6 4203 TST r3,r0
0000c8 bf1c ITT NE
0000ca 2a00 CMPNE r2,#0
;;;193 {
;;;194 bitstatus = SET;
0000cc 2101 MOVNE r1,#1
;;;195 }
;;;196 else
;;;197 {
;;;198 bitstatus = RESET;
;;;199 }
;;;200 return bitstatus;
0000ce 4608 MOV r0,r1
;;;201 }
0000d0 4770 BX lr
ENDP
EXTI_ClearITPendingBit PROC
;;;212 void EXTI_ClearITPendingBit(u32 EXTI_Line)
;;;213 {
0000d2 4905 LDR r1,|L1.232|
;;;214 /* Check the parameters */
;;;215 assert(IS_EXTI_LINE(EXTI_Line));
;;;216
;;;217 EXTI->PR = EXTI_Line;
0000d4 6008 STR r0,[r1,#0]
;;;218 }
0000d6 4770 BX lr
ENDP
|L1.216|
0000d8 40010400 DCD 0x40010400
|L1.220|
0000dc 0007ffff DCD 0x0007ffff
|L1.224|
0000e0 40010000 DCD 0x40010000
|L1.228|
0000e4 40010410 DCD 0x40010410
|L1.232|
0000e8 40010414 DCD 0x40010414
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -