📄 stm32f10x_gpio.txt
字号:
000164 7081 STRB r1,[r0,#2]
;;;223 GPIO_InitStruct->GPIO_Mode = GPIO_Mode_IN_FLOATING;
000166 2104 MOVS r1,#4
000168 70c1 STRB r1,[r0,#3]
;;;224 }
00016a 4770 BX lr
;;;225
ENDP
GPIO_ReadInputDataBit PROC
;;;235 u8 GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
;;;236 {
00016c 4602 MOV r2,r0
;;;237 u8 bitstatus = 0x00;
00016e 2000 MOVS r0,#0
;;;238
;;;239 /* Check the parameters */
;;;240 assert(IS_GET_GPIO_PIN(GPIO_Pin));
;;;241
;;;242 if ((GPIOx->IDR & GPIO_Pin) != (u32)Bit_RESET)
000170 6892 LDR r2,[r2,#8]
000172 420a TST r2,r1
000174 d000 BEQ |L1.376|
;;;243 {
;;;244 bitstatus = (u8)Bit_SET;
000176 2001 MOVS r0,#1
|L1.376|
;;;245 }
;;;246 else
;;;247 {
;;;248 bitstatus = (u8)Bit_RESET;
;;;249 }
;;;250 return bitstatus;
;;;251 }
000178 4770 BX lr
;;;252
ENDP
GPIO_ReadInputData PROC
;;;261 {
;;;262 return ((u16)GPIOx->IDR);
00017a 6880 LDR r0,[r0,#8]
00017c b280 UXTH r0,r0
;;;263 }
00017e 4770 BX lr
;;;264
ENDP
GPIO_ReadOutputDataBit PROC
;;;274 u8 GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
;;;275 {
000180 4602 MOV r2,r0
;;;276 u8 bitstatus = 0x00;
000182 2000 MOVS r0,#0
;;;277
;;;278 /* Check the parameters */
;;;279 assert(IS_GET_GPIO_PIN(GPIO_Pin));
;;;280
;;;281 if ((GPIOx->ODR & GPIO_Pin) != (u32)Bit_RESET)
000184 68d2 LDR r2,[r2,#0xc]
000186 420a TST r2,r1
000188 d000 BEQ |L1.396|
;;;282 {
;;;283 bitstatus = (u8)Bit_SET;
00018a 2001 MOVS r0,#1
|L1.396|
;;;284 }
;;;285 else
;;;286 {
;;;287 bitstatus = (u8)Bit_RESET;
;;;288 }
;;;289 return bitstatus;
;;;290 }
00018c 4770 BX lr
;;;291
ENDP
GPIO_ReadOutputData PROC
;;;300 {
;;;301 return ((u16)GPIOx->ODR);
00018e 68c0 LDR r0,[r0,#0xc]
000190 b280 UXTH r0,r0
;;;302 }
000192 4770 BX lr
;;;303
ENDP
GPIO_SetBits PROC
;;;317 assert(IS_GPIO_PIN(GPIO_Pin));
;;;318 GPIOx->BSRR = GPIO_Pin;
000194 6101 STR r1,[r0,#0x10]
;;;319 }
000196 4770 BX lr
;;;320
ENDP
GPIO_ResetBits PROC
;;;334 assert(IS_GPIO_PIN(GPIO_Pin));
;;;335 GPIOx->BRR = GPIO_Pin;
000198 6141 STR r1,[r0,#0x14]
;;;336 }
00019a 4770 BX lr
;;;337
ENDP
GPIO_WriteBit PROC
;;;356
;;;357 if (BitVal != Bit_RESET)
00019c b10a CBZ r2,|L1.418|
;;;358 {
;;;359 GPIOx->BSRR = GPIO_Pin;
00019e 6101 STR r1,[r0,#0x10]
;;;360 }
;;;361 else
;;;362 {
;;;363 GPIOx->BRR = GPIO_Pin;
;;;364 }
;;;365 }
0001a0 4770 BX lr
|L1.418|
0001a2 6141 STR r1,[r0,#0x14]
0001a4 4770 BX lr
;;;366
ENDP
GPIO_Write PROC
;;;377 {
;;;378 GPIOx->ODR = PortVal;
0001a6 60c1 STR r1,[r0,#0xc]
;;;379 }
0001a8 4770 BX lr
;;;380
ENDP
GPIO_PinLockConfig PROC
;;;397
;;;398 tmp |= GPIO_Pin;
0001aa f441f441 ORR r2,r1,#0x10000
;;;399 /* Set LCKK bit */
;;;400 GPIOx->LCKR = tmp;
0001ae 6182 STR r2,[r0,#0x18]
;;;401 /* Reset LCKK bit */
;;;402 GPIOx->LCKR = GPIO_Pin;
0001b0 6181 STR r1,[r0,#0x18]
;;;403 /* Set LCKK bit */
;;;404 GPIOx->LCKR = tmp;
0001b2 6182 STR r2,[r0,#0x18]
;;;405 /* Read LCKK bit*/
;;;406 tmp = GPIOx->LCKR;
0001b4 6981 LDR r1,[r0,#0x18]
;;;407 /* Read LCKK bit*/
;;;408 tmp = GPIOx->LCKR;
0001b6 6980 LDR r0,[r0,#0x18]
;;;409 }
0001b8 4770 BX lr
;;;410
ENDP
GPIO_EventOutputConfig PROC
;;;430
;;;431 tmpreg = AFIO->EVCR;
0001ba 4b22 LDR r3,|L1.580|
0001bc 681a LDR r2,[r3,#0]
;;;432 /* Clear the PORT[6:4] and PIN[3:0] bits */
;;;433 tmpreg &= EVCR_PORTPINCONFIG_MASK;
0001be f64ff64f MOV r12,#0xff80
0001c2 ea02ea02 AND r2,r2,r12
;;;434 tmpreg |= (u32)GPIO_PortSource << 0x04;
0001c6 ea42ea42 ORR r0,r2,r0,LSL #4
;;;435 tmpreg |= GPIO_PinSource;
0001ca 4308 ORRS r0,r0,r1
;;;436
;;;437 AFIO->EVCR = tmpreg;
0001cc 6018 STR r0,[r3,#0]
;;;438 }
0001ce 4770 BX lr
;;;439
ENDP
GPIO_EventOutputCmd PROC
;;;452
;;;453 *(vu32 *) EVCR_EVOE_BB = (u32)NewState;
0001d0 491d LDR r1,|L1.584|
0001d2 61c8 STR r0,[r1,#0x1c]
;;;454 }
0001d4 4770 BX lr
;;;455
ENDP
GPIO_PinRemapConfig PROC
;;;486 void GPIO_PinRemapConfig(u32 GPIO_Remap, FunctionalState NewState)
;;;487 {
0001d6 b430 PUSH {r4,r5}
;;;488 u32 tmp = 0x00, tmp1 = 0x00, tmpreg = 0x00, tmpmask = 0x00;
;;;489
;;;490 /* Check the parameters */
;;;491 assert(IS_GPIO_REMAP(GPIO_Remap));
;;;492 assert(IS_FUNCTIONAL_STATE(NewState));
;;;493
;;;494 tmpreg = AFIO->MAPR;
0001d8 4c1a LDR r4,|L1.580|
0001da 6862 LDR r2,[r4,#4]
;;;495
;;;496 tmpmask = (GPIO_Remap & DBGAFR_POSITION_MASK) >> 0x10;
0001dc f3c0f3c0 UBFX r12,r0,#16,#4
;;;497 tmp = GPIO_Remap & LSB_MASK;
0001e0 b283 UXTH r3,r0
;;;498
;;;499 if ((GPIO_Remap & DBGAFR_LOCATION_MASK) == DBGAFR_LOCATION_MASK)
0001e2 f410f410 TST r0,#0x200000
0001e6 d002 BEQ |L1.494|
;;;500 {
;;;501 tmpreg &= DBGAFR_SWJCFG_MASK;
0001e8 f022f022 BIC r2,r2,#0x7000000
0001ec e009 B |L1.514|
|L1.494|
;;;502 }
;;;503 else if ((GPIO_Remap & DBGAFR_NUMBITS_MASK) == DBGAFR_NUMBITS_MASK)
0001ee f410f410 TST r0,#0x100000
0001f2 d005 BEQ |L1.512|
;;;504 {
;;;505 tmp1 = ((u32)0x03) << tmpmask;
0001f4 2503 MOVS r5,#3
0001f6 fa05fa05 LSL r12,r5,r12
;;;506 tmpreg &= ~tmp1;
0001fa ea22ea22 BIC r2,r2,r12
0001fe e000 B |L1.514|
|L1.512|
;;;507 }
;;;508 else
;;;509 {
;;;510 tmpreg &= ~tmp;
000200 439a BICS r2,r2,r3
|L1.514|
;;;511 }
;;;512
;;;513 if (NewState != DISABLE)
000202 b131 CBZ r1,|L1.530|
;;;514 {
;;;515 if ((GPIO_Remap & DBGAFR_LOCATION_MASK) == DBGAFR_LOCATION_MASK)
000204 f410f410 TST r0,#0x200000
000208 d002 BEQ |L1.528|
;;;516 {
;;;517 tmpreg |= (tmp << 0x10);
00020a ea42ea42 ORR r2,r2,r3,LSL #16
00020e e000 B |L1.530|
|L1.528|
;;;518 }
;;;519 else
;;;520 {
;;;521 tmpreg |= tmp;
000210 431a ORRS r2,r2,r3
|L1.530|
;;;522 }
;;;523 }
;;;524 AFIO->MAPR = tmpreg;
000212 6062 STR r2,[r4,#4]
;;;525 }
000214 bc30 POP {r4,r5}
000216 4770 BX lr
;;;526
ENDP
GPIO_EXTILineConfig PROC
;;;544
;;;545 tmp = ((u32)0x0F) << (0x04 * (GPIO_PinSource & (u8)0x03));
000218 078a LSLS r2,r1,#30
00021a 0f12 LSRS r2,r2,#28
00021c 230f MOVS r3,#0xf
00021e 4093 LSLS r3,r3,r2
;;;546
;;;547 AFIO->EXTICR[GPIO_PinSource >> 0x02] &= ~tmp;
000220 f021f021 BIC r1,r1,#3
000224 f101f101 ADD r1,r1,#0x40000000
000228 f501f501 ADD r1,r1,#0x10000
00022c f8d1f8d1 LDR r12,[r1,#8]
000230 ea2cea2c BIC r3,r12,r3
000234 608b STR r3,[r1,#8]
;;;548 AFIO->EXTICR[GPIO_PinSource >> 0x02] |= (((u32)GPIO_PortSource) << (0x04 * (GPIO_PinSource & (u8)0x03)));
000236 688b LDR r3,[r1,#8]
000238 4090 LSLS r0,r0,r2
00023a 4318 ORRS r0,r0,r3
00023c 6088 STR r0,[r1,#8]
;;;549 }
00023e 4770 BX lr
;;;550
ENDP
|L1.576|
000240 40011000 DCD 0x40011000
|L1.580|
000244 40010000 DCD 0x40010000
|L1.584|
000248 42200000 DCD 0x42200000
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -