📄 stm32f10x_gpio.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_gpio.o --depend=.\Obj\stm32f10x_gpio.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_gpio.c]
THUMB
AREA ||i.GPIO_AFIODeInit||, CODE, READONLY, ALIGN=1
GPIO_AFIODeInit PROC
;;;106 *******************************************************************************/
;;;107 void GPIO_AFIODeInit(void)
000000 b510 PUSH {r4,lr}
;;;108 {
;;;109 RCC_APB2PeriphResetCmd(RCC_APB2Periph_AFIO, ENABLE);
000002 2101 MOVS r1,#1
000004 4608 MOV r0,r1
000006 f7fffffe BL RCC_APB2PeriphResetCmd
;;;110 RCC_APB2PeriphResetCmd(RCC_APB2Periph_AFIO, DISABLE);
00000a 2100 MOVS r1,#0
00000c e8bd4010 POP {r4,lr}
000010 2001 MOVS r0,#1
000012 f7ffbffe B.W RCC_APB2PeriphResetCmd
;;;111 }
;;;112
ENDP
AREA ||i.GPIO_DeInit||, CODE, READONLY, ALIGN=2
GPIO_DeInit PROC
;;;50 *******************************************************************************/
;;;51 void GPIO_DeInit(GPIO_TypeDef* GPIOx)
000000 4a25 LDR r2,|L2.152|
;;;52 {
000002 b510 PUSH {r4,lr}
;;;53 /* Check the parameters */
;;;54 assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
;;;55
;;;56 switch (*(u32*)&GPIOx)
000004 1a81 SUBS r1,r0,r2
000006 1513 ASRS r3,r2,#20
000008 14d4 ASRS r4,r2,#19
00000a 4290 CMP r0,r2
00000c d02e BEQ |L2.108|
00000e dc0d BGT |L2.44|
000010 4922 LDR r1,|L2.156|
000012 1840 ADDS r0,r0,r1
000014 d01c BEQ |L2.80|
000016 4298 CMP r0,r3
000018 d021 BEQ |L2.94|
00001a 42a0 CMP r0,r4
00001c d13b BNE |L2.150|
;;;57 {
;;;58 case GPIOA_BASE:
;;;59 RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOA, ENABLE);
;;;60 RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOA, DISABLE);
;;;61 break;
;;;62
;;;63 case GPIOB_BASE:
;;;64 RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOB, ENABLE);
;;;65 RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOB, DISABLE);
;;;66 break;
;;;67
;;;68 case GPIOC_BASE:
;;;69 RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOC, ENABLE);
00001e 2101 MOVS r1,#1
000020 2010 MOVS r0,#0x10
000022 f7fffffe BL RCC_APB2PeriphResetCmd
;;;70 RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOC, DISABLE);
000026 2100 MOVS r1,#0
000028 2010 MOVS r0,#0x10
;;;71 break;
00002a e00d B |L2.72|
|L2.44|
00002c 4299 CMP r1,r3 ;56
00002e d024 BEQ |L2.122|
000030 42a1 CMP r1,r4 ;56
000032 d029 BEQ |L2.136|
000034 f5b16f40 CMP r1,#0xc00 ;56
000038 d12d BNE |L2.150|
;;;72
;;;73 case GPIOD_BASE:
;;;74 RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOD, ENABLE);
;;;75 RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOD, DISABLE);
;;;76 break;
;;;77
;;;78 case GPIOE_BASE:
;;;79 RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOE, ENABLE);
;;;80 RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOE, DISABLE);
;;;81 break;
;;;82
;;;83 case GPIOF_BASE:
;;;84 RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOF, ENABLE);
;;;85 RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOF, DISABLE);
;;;86 break;
;;;87
;;;88 case GPIOG_BASE:
;;;89 RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOG, ENABLE);
00003a 2101 MOVS r1,#1
00003c 020c LSLS r4,r1,#8
00003e 4620 MOV r0,r4
000040 f7fffffe BL RCC_APB2PeriphResetCmd
;;;90 RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOG, DISABLE);
000044 2100 MOVS r1,#0
000046 4620 MOV r0,r4
|L2.72|
000048 e8bd4010 POP {r4,lr}
00004c f7ffbffe B.W RCC_APB2PeriphResetCmd
|L2.80|
000050 2101 MOVS r1,#1 ;59
000052 2004 MOVS r0,#4 ;59
000054 f7fffffe BL RCC_APB2PeriphResetCmd
000058 2100 MOVS r1,#0 ;60
00005a 2004 MOVS r0,#4 ;60
00005c e7f4 B |L2.72|
|L2.94|
00005e 2101 MOVS r1,#1 ;64
000060 2008 MOVS r0,#8 ;64
000062 f7fffffe BL RCC_APB2PeriphResetCmd
000066 2100 MOVS r1,#0 ;65
000068 2008 MOVS r0,#8 ;65
00006a e7ed B |L2.72|
|L2.108|
00006c 2101 MOVS r1,#1 ;74
00006e 2020 MOVS r0,#0x20 ;74
000070 f7fffffe BL RCC_APB2PeriphResetCmd
000074 2100 MOVS r1,#0 ;75
000076 2020 MOVS r0,#0x20 ;75
000078 e7e6 B |L2.72|
|L2.122|
00007a 2101 MOVS r1,#1 ;79
00007c 2040 MOVS r0,#0x40 ;79
00007e f7fffffe BL RCC_APB2PeriphResetCmd
000082 2100 MOVS r1,#0 ;80
000084 2040 MOVS r0,#0x40 ;80
000086 e7df B |L2.72|
|L2.136|
000088 2101 MOVS r1,#1 ;84
00008a 2080 MOVS r0,#0x80 ;84
00008c f7fffffe BL RCC_APB2PeriphResetCmd
000090 2100 MOVS r1,#0 ;85
000092 2080 MOVS r0,#0x80 ;85
000094 e7d8 B |L2.72|
|L2.150|
;;;91 break;
;;;92
;;;93 default:
;;;94 break;
;;;95 }
;;;96 }
000096 bd10 POP {r4,pc}
;;;97
ENDP
|L2.152|
DCD 0x40011400
|L2.156|
DCD 0xbffef800
AREA ||i.GPIO_EXTILineConfig||, CODE, READONLY, ALIGN=2
GPIO_EXTILineConfig PROC
;;;565 *******************************************************************************/
;;;566 void GPIO_EXTILineConfig(u8 GPIO_PortSource, u8 GPIO_PinSource)
000000 b510 PUSH {r4,lr}
;;;567 {
;;;568 u32 tmp = 0x00;
;;;569
;;;570 /* Check the parameters */
;;;571 assert_param(IS_GPIO_EXTI_PORT_SOURCE(GPIO_PortSource));
;;;572 assert_param(IS_GPIO_PIN_SOURCE(GPIO_PinSource));
;;;573
;;;574 tmp = ((u32)0x0F) << (0x04 * (GPIO_PinSource & (u8)0x03));
000002 078a LSLS r2,r1,#30
;;;575
;;;576 AFIO->EXTICR[GPIO_PinSource >> 0x02] &= ~tmp;
000004 f0210403 BIC r4,r1,#3
000008 4906 LDR r1,|L3.36|
00000a 0f12 LSRS r2,r2,#28 ;574
00000c 4421 ADD r1,r1,r4
00000e 230f MOVS r3,#0xf ;574
000010 688c LDR r4,[r1,#8]
000012 4093 LSLS r3,r3,r2 ;574
000014 439c BICS r4,r4,r3
000016 608c STR r4,[r1,#8]
;;;577 AFIO->EXTICR[GPIO_PinSource >> 0x02] |= (((u32)GPIO_PortSource) << (0x04 * (GPIO_PinSource & (u8)0x03)));
000018 688b LDR r3,[r1,#8]
00001a 4090 LSLS r0,r0,r2
00001c 4303 ORRS r3,r3,r0
00001e 608b STR r3,[r1,#8]
;;;578 }
000020 bd10 POP {r4,pc}
;;;579
ENDP
000022 0000 DCW 0x0000
|L3.36|
DCD 0x40010000
AREA ||i.GPIO_EventOutputCmd||, CODE, READONLY, ALIGN=2
GPIO_EventOutputCmd PROC
;;;472 *******************************************************************************/
;;;473 void GPIO_EventOutputCmd(FunctionalState NewState)
000000 4901 LDR r1,|L4.8|
;;;474 {
;;;475 /* Check the parameters */
;;;476 assert_param(IS_FUNCTIONAL_STATE(NewState));
;;;477
;;;478 *(vu32 *) EVCR_EVOE_BB = (u32)NewState;
000002 61c8 STR r0,[r1,#0x1c]
;;;479 }
000004 4770 BX lr
;;;480
ENDP
000006 0000 DCW 0x0000
|L4.8|
DCD 0x42200000
AREA ||i.GPIO_EventOutputConfig||, CODE, READONLY, ALIGN=2
GPIO_EventOutputConfig PROC
;;;447 *******************************************************************************/
;;;448 void GPIO_EventOutputConfig(u8 GPIO_PortSource, u8 GPIO_PinSource)
000000 b510 PUSH {r4,lr}
;;;449 {
;;;450 u32 tmpreg = 0x00;
;;;451
;;;452 /* Check the parameters */
;;;453 assert_param(IS_GPIO_EVENTOUT_PORT_SOURCE(GPIO_PortSource));
;;;454 assert_param(IS_GPIO_PIN_SOURCE(GPIO_PinSource));
;;;455
;;;456 tmpreg = AFIO->EVCR;
000002 4b05 LDR r3,|L5.24|
000004 681a LDR r2,[r3,#0]
;;;457 /* Clear the PORT[6:4] and PIN[3:0] bits */
;;;458 tmpreg &= EVCR_PORTPINCONFIG_MASK;
000006 f64f7480 MOV r4,#0xff80
00000a 4022 ANDS r2,r2,r4
;;;459 tmpreg |= (u32)GPIO_PortSource << 0x04;
00000c ea421000 ORR r0,r2,r0,LSL #4
;;;460 tmpreg |= GPIO_PinSource;
000010 4308 ORRS r0,r0,r1
;;;461
;;;462 AFIO->EVCR = tmpreg;
000012 6018 STR r0,[r3,#0]
;;;463 }
000014 bd10 POP {r4,pc}
;;;464
ENDP
000016 0000 DCW 0x0000
|L5.24|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -