📄 stm32f10x_gpio.txt
字号:
;;;237 if ((GPIOx->IDR & GPIO_Pin) != (u32)Bit_RESET)
000002 6892 LDR r2,[r2,#8]
000004 2000 MOVS r0,#0
000006 420a TST r2,r1
000008 d000 BEQ |L5.12|
;;;238 {
;;;239 bitstatus = (u8)Bit_SET;
00000a 2001 MOVS r0,#1
|L5.12|
;;;240 }
;;;241 else
;;;242 {
;;;243 bitstatus = (u8)Bit_RESET;
;;;244 }
;;;245 return bitstatus;
;;;246 }
00000c 4770 BX lr
ENDP
AREA ||i.GPIO_ReadInputData||, CODE, READONLY, ALIGN=1
GPIO_ReadInputData PROC
;;;256 {
;;;257 return ((u16)GPIOx->IDR);
000000 6880 LDR r0,[r0,#8]
000002 b280 UXTH r0,r0
;;;258 }
000004 4770 BX lr
ENDP
AREA ||i.GPIO_ReadOutputDataBit||, CODE, READONLY, ALIGN=1
GPIO_ReadOutputDataBit PROC
;;;269 u8 GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
;;;270 {
000000 4602 MOV r2,r0
;;;271 u8 bitstatus = 0x00;
;;;272
;;;273 /* Check the parameters */
;;;274 assert_param(IS_GET_GPIO_PIN(GPIO_Pin));
;;;275
;;;276 if ((GPIOx->ODR & GPIO_Pin) != (u32)Bit_RESET)
000002 68d2 LDR r2,[r2,#0xc]
000004 2000 MOVS r0,#0
000006 420a TST r2,r1
000008 d000 BEQ |L7.12|
;;;277 {
;;;278 bitstatus = (u8)Bit_SET;
00000a 2001 MOVS r0,#1
|L7.12|
;;;279 }
;;;280 else
;;;281 {
;;;282 bitstatus = (u8)Bit_RESET;
;;;283 }
;;;284 return bitstatus;
;;;285 }
00000c 4770 BX lr
ENDP
AREA ||i.GPIO_ReadOutputData||, CODE, READONLY, ALIGN=1
GPIO_ReadOutputData PROC
;;;295 {
;;;296 return ((u16)GPIOx->ODR);
000000 68c0 LDR r0,[r0,#0xc]
000002 b280 UXTH r0,r0
;;;297 }
000004 4770 BX lr
ENDP
AREA ||i.GPIO_SetBits||, CODE, READONLY, ALIGN=1
GPIO_SetBits PROC
;;;312 assert_param(IS_GPIO_PIN(GPIO_Pin));
;;;313 GPIOx->BSRR = GPIO_Pin;
000000 6101 STR r1,[r0,#0x10]
;;;314 }
000002 4770 BX lr
ENDP
AREA ||i.GPIO_ResetBits||, CODE, READONLY, ALIGN=1
GPIO_ResetBits PROC
;;;329 assert_param(IS_GPIO_PIN(GPIO_Pin));
;;;330 GPIOx->BRR = GPIO_Pin;
000000 6141 STR r1,[r0,#0x14]
;;;331 }
000002 4770 BX lr
ENDP
AREA ||i.GPIO_WriteBit||, CODE, READONLY, ALIGN=1
GPIO_WriteBit PROC
;;;351
;;;352 if (BitVal != Bit_RESET)
000000 b10a CBZ r2,|L11.6|
;;;353 {
;;;354 GPIOx->BSRR = GPIO_Pin;
000002 6101 STR r1,[r0,#0x10]
;;;355 }
;;;356 else
;;;357 {
;;;358 GPIOx->BRR = GPIO_Pin;
;;;359 }
;;;360 }
000004 4770 BX lr
|L11.6|
000006 6141 STR r1,[r0,#0x14]
000008 4770 BX lr
ENDP
AREA ||i.GPIO_Write||, CODE, READONLY, ALIGN=1
GPIO_Write PROC
;;;372 {
;;;373 GPIOx->ODR = PortVal;
000000 60c1 STR r1,[r0,#0xc]
;;;374 }
000002 4770 BX lr
ENDP
AREA ||i.GPIO_PinLockConfig||, CODE, READONLY, ALIGN=1
GPIO_PinLockConfig PROC
;;;392
;;;393 tmp |= GPIO_Pin;
000000 f441f441 ORR r2,r1,#0x10000
;;;394 /* Set LCKK bit */
;;;395 GPIOx->LCKR = tmp;
000004 6182 STR r2,[r0,#0x18]
;;;396 /* Reset LCKK bit */
;;;397 GPIOx->LCKR = GPIO_Pin;
000006 6181 STR r1,[r0,#0x18]
;;;398 /* Set LCKK bit */
;;;399 GPIOx->LCKR = tmp;
000008 6182 STR r2,[r0,#0x18]
;;;400 /* Read LCKK bit*/
;;;401 tmp = GPIOx->LCKR;
00000a 6981 LDR r1,[r0,#0x18]
;;;402 /* Read LCKK bit*/
;;;403 tmp = GPIOx->LCKR;
00000c 6980 LDR r0,[r0,#0x18]
;;;404 }
00000e 4770 BX lr
ENDP
AREA ||i.GPIO_EventOutputConfig||, CODE, READONLY, ALIGN=2
GPIO_EventOutputConfig PROC
;;;418 void GPIO_EventOutputConfig(u8 GPIO_PortSource, u8 GPIO_PinSource)
;;;419 {
000000 b510 PUSH {r4,lr}
;;;420 u32 tmpreg = 0x00;
;;;421
;;;422 /* Check the parameters */
;;;423 assert_param(IS_GPIO_PORT_SOURCE(GPIO_PortSource));
;;;424 assert_param(IS_GPIO_PIN_SOURCE(GPIO_PinSource));
;;;425
;;;426 tmpreg = AFIO->EVCR;
000002 4b05 LDR r3,|L14.24|
000004 681a LDR r2,[r3,#0]
;;;427 /* Clear the PORT[6:4] and PIN[3:0] bits */
;;;428 tmpreg &= EVCR_PORTPINCONFIG_MASK;
000006 f64ff64f MOV r4,#0xff80
00000a 4022 ANDS r2,r2,r4
;;;429 tmpreg |= (u32)GPIO_PortSource << 0x04;
00000c ea42ea42 ORR r0,r2,r0,LSL #4
;;;430 tmpreg |= GPIO_PinSource;
000010 4308 ORRS r0,r0,r1
;;;431
;;;432 AFIO->EVCR = tmpreg;
000012 6018 STR r0,[r3,#0]
;;;433 }
000014 bd10 POP {r4,pc}
ENDP
000016 0000 DCW 0x0000
|L14.24|
000018 40010000 DCD 0x40010000
AREA ||i.GPIO_EventOutputCmd||, CODE, READONLY, ALIGN=2
GPIO_EventOutputCmd PROC
;;;447
;;;448 *(vu32 *) EVCR_EVOE_BB = (u32)NewState;
000000 4901 LDR r1,|L15.8|
000002 61c8 STR r0,[r1,#0x1c]
;;;449 }
000004 4770 BX lr
ENDP
000006 0000 DCW 0x0000
|L15.8|
000008 42200000 DCD 0x42200000
AREA ||i.GPIO_PinRemapConfig||, CODE, READONLY, ALIGN=2
GPIO_PinRemapConfig PROC
;;;481 void GPIO_PinRemapConfig(u32 GPIO_Remap, FunctionalState NewState)
;;;482 {
000000 b570 PUSH {r4-r6,lr}
;;;483 u32 tmp = 0x00, tmp1 = 0x00, tmpreg = 0x00, tmpmask = 0x00;
;;;484
;;;485 /* Check the parameters */
;;;486 assert_param(IS_GPIO_REMAP(GPIO_Remap));
;;;487 assert_param(IS_FUNCTIONAL_STATE(NewState));
;;;488
;;;489 tmpreg = AFIO->MAPR;
000002 4e0d LDR r6,|L16.56|
000004 6872 LDR r2,[r6,#4]
;;;490
;;;491 tmpmask = (GPIO_Remap & DBGAFR_POSITION_MASK) >> 0x10;
000006 f3c0f3c0 UBFX r5,r0,#16,#4
;;;492 tmp = GPIO_Remap & LSB_MASK;
00000a b283 UXTH r3,r0
;;;493
;;;494 if ((GPIO_Remap & DBGAFR_LOCATION_MASK) == DBGAFR_LOCATION_MASK)
00000c 0284 LSLS r4,r0,#10
00000e d502 BPL |L16.22|
;;;495 {
;;;496 tmpreg &= DBGAFR_SWJCFG_MASK;
000010 f022f022 BIC r2,r2,#0x7000000
000014 e006 B |L16.36|
|L16.22|
;;;497 }
;;;498 else if ((GPIO_Remap & DBGAFR_NUMBITS_MASK) == DBGAFR_NUMBITS_MASK)
000016 02c4 LSLS r4,r0,#11
000018 d503 BPL |L16.34|
;;;499 {
;;;500 tmp1 = ((u32)0x03) << tmpmask;
00001a 2403 MOVS r4,#3
00001c 40ac LSLS r4,r4,r5
;;;501 tmpreg &= ~tmp1;
00001e 43a2 BICS r2,r2,r4
000020 e000 B |L16.36|
|L16.34|
;;;502 }
;;;503 else
;;;504 {
;;;505 tmpreg &= ~tmp;
000022 439a BICS r2,r2,r3
|L16.36|
;;;506 }
;;;507
;;;508 if (NewState != DISABLE)
000024 b129 CBZ r1,|L16.50|
;;;509 {
;;;510 if ((GPIO_Remap & DBGAFR_LOCATION_MASK) == DBGAFR_LOCATION_MASK)
000026 0280 LSLS r0,r0,#10
000028 d502 BPL |L16.48|
;;;511 {
;;;512 tmpreg |= (tmp << 0x10);
00002a ea42ea42 ORR r2,r2,r3,LSL #16
00002e e000 B |L16.50|
|L16.48|
;;;513 }
;;;514 else
;;;515 {
;;;516 tmpreg |= tmp;
000030 431a ORRS r2,r2,r3
|L16.50|
;;;517 }
;;;518 }
;;;519 AFIO->MAPR = tmpreg;
000032 6072 STR r2,[r6,#4]
;;;520 }
000034 bd70 POP {r4-r6,pc}
ENDP
000036 0000 DCW 0x0000
|L16.56|
000038 40010000 DCD 0x40010000
AREA ||i.GPIO_EXTILineConfig||, CODE, READONLY, ALIGN=2
GPIO_EXTILineConfig PROC
;;;532 void GPIO_EXTILineConfig(u8 GPIO_PortSource, u8 GPIO_PinSource)
;;;533 {
000000 b510 PUSH {r4,lr}
;;;534 u32 tmp = 0x00;
;;;535
;;;536 /* Check the parameters */
;;;537 assert_param(IS_GPIO_PORT_SOURCE(GPIO_PortSource));
;;;538 assert_param(IS_GPIO_PIN_SOURCE(GPIO_PinSource));
;;;539
;;;540 tmp = ((u32)0x0F) << (0x04 * (GPIO_PinSource & (u8)0x03));
000002 078a LSLS r2,r1,#30
;;;541
;;;542 AFIO->EXTICR[GPIO_PinSource >> 0x02] &= ~tmp;
000004 f021f021 BIC r4,r1,#3
000008 4906 LDR r1,|L17.36|
00000a 0f12 LSRS r2,r2,#28
00000c 4421 ADD r1,r1,r4
00000e 230f MOVS r3,#0xf
000010 688c LDR r4,[r1,#8]
000012 4093 LSLS r3,r3,r2
000014 439c BICS r4,r4,r3
000016 608c STR r4,[r1,#8]
;;;543 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]
;;;544 }
000020 bd10 POP {r4,pc}
ENDP
000022 0000 DCW 0x0000
|L17.36|
000024 40010000 DCD 0x40010000
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -