📄 stm32f10x_gpio.txt
字号:
ENDP
GPIO_StructInit PROC
;;;220 /* Reset GPIO init structure parameters values */
;;;221 GPIO_InitStruct->GPIO_Pin = GPIO_Pin_All;
00016e f64ff64f MOV r1,#0xffff
000172 8001 STRH r1,[r0,#0]
;;;222 GPIO_InitStruct->GPIO_Speed = GPIO_Speed_2MHz;
000174 2102 MOVS r1,#2
000176 7081 STRB r1,[r0,#2]
;;;223 GPIO_InitStruct->GPIO_Mode = GPIO_Mode_IN_FLOATING;
000178 2104 MOVS r1,#4
00017a 70c1 STRB r1,[r0,#3]
;;;224 }
00017c 4770 BX lr
ENDP
GPIO_ReadInputDataBit PROC
;;;235 u8 GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
;;;236 {
00017e 4602 MOV r2,r0
;;;237 u8 bitstatus = 0x00;
;;;238
;;;239 /* Check the parameters */
;;;240 assert(IS_GET_GPIO_PIN(GPIO_Pin));
;;;241
;;;242 if ((GPIOx->IDR & GPIO_Pin) != (u32)Bit_RESET)
000180 6892 LDR r2,[r2,#8]
000182 2000 MOVS r0,#0
000184 420a TST r2,r1
;;;243 {
;;;244 bitstatus = (u8)Bit_SET;
000186 bf18 IT NE
000188 2001 MOVNE r0,#1
;;;245 }
;;;246 else
;;;247 {
;;;248 bitstatus = (u8)Bit_RESET;
;;;249 }
;;;250 return bitstatus;
;;;251 }
00018a 4770 BX lr
ENDP
GPIO_ReadInputData PROC
;;;261 {
;;;262 return ((u16)GPIOx->IDR);
00018c 6880 LDR r0,[r0,#8]
00018e b280 UXTH r0,r0
;;;263 }
000190 4770 BX lr
ENDP
GPIO_ReadOutputDataBit PROC
;;;274 u8 GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
;;;275 {
000192 4602 MOV r2,r0
;;;276 u8 bitstatus = 0x00;
;;;277
;;;278 /* Check the parameters */
;;;279 assert(IS_GET_GPIO_PIN(GPIO_Pin));
;;;280
;;;281 if ((GPIOx->ODR & GPIO_Pin) != (u32)Bit_RESET)
000194 68d2 LDR r2,[r2,#0xc]
000196 2000 MOVS r0,#0
000198 420a TST r2,r1
;;;282 {
;;;283 bitstatus = (u8)Bit_SET;
00019a bf18 IT NE
00019c 2001 MOVNE r0,#1
;;;284 }
;;;285 else
;;;286 {
;;;287 bitstatus = (u8)Bit_RESET;
;;;288 }
;;;289 return bitstatus;
;;;290 }
00019e 4770 BX lr
ENDP
GPIO_ReadOutputData PROC
;;;300 {
;;;301 return ((u16)GPIOx->ODR);
0001a0 68c0 LDR r0,[r0,#0xc]
0001a2 b280 UXTH r0,r0
;;;302 }
0001a4 4770 BX lr
ENDP
GPIO_SetBits PROC
;;;317 assert(IS_GPIO_PIN(GPIO_Pin));
;;;318 GPIOx->BSRR = GPIO_Pin;
0001a6 6101 STR r1,[r0,#0x10]
;;;319 }
0001a8 4770 BX lr
ENDP
GPIO_ResetBits PROC
;;;334 assert(IS_GPIO_PIN(GPIO_Pin));
;;;335 GPIOx->BRR = GPIO_Pin;
0001aa 6141 STR r1,[r0,#0x14]
;;;336 }
0001ac 4770 BX lr
ENDP
GPIO_WriteBit PROC
;;;356
;;;357 if (BitVal != Bit_RESET)
0001ae 2a00 CMP r2,#0
;;;358 {
;;;359 GPIOx->BSRR = GPIO_Pin;
;;;360 }
;;;361 else
;;;362 {
;;;363 GPIOx->BRR = GPIO_Pin;
0001b0 bf0c ITE EQ
0001b2 6141 STREQ r1,[r0,#0x14]
0001b4 6101 STRNE r1,[r0,#0x10]
;;;364 }
;;;365 }
0001b6 4770 BX lr
ENDP
GPIO_Write PROC
;;;377 {
;;;378 GPIOx->ODR = PortVal;
0001b8 60c1 STR r1,[r0,#0xc]
;;;379 }
0001ba 4770 BX lr
ENDP
GPIO_PinLockConfig PROC
;;;397
;;;398 tmp |= GPIO_Pin;
0001bc f441f441 ORR r2,r1,#0x10000
;;;399 /* Set LCKK bit */
;;;400 GPIOx->LCKR = tmp;
0001c0 6182 STR r2,[r0,#0x18]
;;;401 /* Reset LCKK bit */
;;;402 GPIOx->LCKR = GPIO_Pin;
0001c2 6181 STR r1,[r0,#0x18]
;;;403 /* Set LCKK bit */
;;;404 GPIOx->LCKR = tmp;
0001c4 6182 STR r2,[r0,#0x18]
;;;405 /* Read LCKK bit*/
;;;406 tmp = GPIOx->LCKR;
0001c6 6981 LDR r1,[r0,#0x18]
;;;407 /* Read LCKK bit*/
;;;408 tmp = GPIOx->LCKR;
0001c8 6980 LDR r0,[r0,#0x18]
;;;409 }
0001ca 4770 BX lr
ENDP
GPIO_EventOutputConfig PROC
;;;430
;;;431 tmpreg = AFIO->EVCR;
0001cc 4b20 LDR r3,|L1.592|
0001ce 681a LDR r2,[r3,#0]
;;;432 /* Clear the PORT[6:4] and PIN[3:0] bits */
;;;433 tmpreg &= EVCR_PORTPINCONFIG_MASK;
0001d0 f64ff64f MOV r12,#0xff80
0001d4 ea02ea02 AND r2,r2,r12
;;;434 tmpreg |= (u32)GPIO_PortSource << 0x04;
0001d8 ea42ea42 ORR r0,r2,r0,LSL #4
;;;435 tmpreg |= GPIO_PinSource;
0001dc 4308 ORRS r0,r0,r1
;;;436
;;;437 AFIO->EVCR = tmpreg;
0001de 6018 STR r0,[r3,#0]
;;;438 }
0001e0 4770 BX lr
ENDP
GPIO_EventOutputCmd PROC
;;;452
;;;453 *(vu32 *) EVCR_EVOE_BB = (u32)NewState;
0001e2 491c LDR r1,|L1.596|
0001e4 61c8 STR r0,[r1,#0x1c]
;;;454 }
0001e6 4770 BX lr
ENDP
GPIO_PinRemapConfig PROC
;;;486 void GPIO_PinRemapConfig(u32 GPIO_Remap, FunctionalState NewState)
;;;487 {
0001e8 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;
0001ea 4c19 LDR r4,|L1.592|
0001ec 6862 LDR r2,[r4,#4]
;;;495
;;;496 tmpmask = (GPIO_Remap & DBGAFR_POSITION_MASK) >> 0x10;
0001ee f3c0f3c0 UBFX r12,r0,#16,#4
;;;497 tmp = GPIO_Remap & LSB_MASK;
0001f2 b283 UXTH r3,r0
;;;498
;;;499 if ((GPIO_Remap & DBGAFR_LOCATION_MASK) == DBGAFR_LOCATION_MASK)
0001f4 f410f410 TST r0,#0x200000
;;;500 {
;;;501 tmpreg &= DBGAFR_SWJCFG_MASK;
0001f8 bf18 IT NE
0001fa f022f022 BICNE r2,r2,#0x7000000
0001fe d108 BNE |L1.530|
;;;502 }
;;;503 else if ((GPIO_Remap & DBGAFR_NUMBITS_MASK) == DBGAFR_NUMBITS_MASK)
000200 f410f410 TST r0,#0x100000
;;;504 {
;;;505 tmp1 = ((u32)0x03) << tmpmask;
;;;506 tmpreg &= ~tmp1;
;;;507 }
;;;508 else
;;;509 {
;;;510 tmpreg &= ~tmp;
000204 bf0f ITEEE EQ
000206 439a BICEQ r2,r2,r3
000208 2503 MOVNE r5,#3
00020a fa05fa05 LSLNE r12,r5,r12
00020e ea22ea22 BICNE r2,r2,r12
|L1.530|
;;;511 }
;;;512
;;;513 if (NewState != DISABLE)
000212 b129 CBZ r1,|L1.544|
;;;514 {
;;;515 if ((GPIO_Remap & DBGAFR_LOCATION_MASK) == DBGAFR_LOCATION_MASK)
000214 f410f410 TST r0,#0x200000
;;;516 {
;;;517 tmpreg |= (tmp << 0x10);
;;;518 }
;;;519 else
;;;520 {
;;;521 tmpreg |= tmp;
000218 bf0c ITE EQ
00021a 431a ORREQ r2,r2,r3
00021c ea42ea42 ORRNE r2,r2,r3,LSL #16
|L1.544|
;;;522 }
;;;523 }
;;;524 AFIO->MAPR = tmpreg;
000220 6062 STR r2,[r4,#4]
;;;525 }
000222 bc30 POP {r4,r5}
000224 4770 BX lr
ENDP
GPIO_EXTILineConfig PROC
;;;544
;;;545 tmp = ((u32)0x0F) << (0x04 * (GPIO_PinSource & (u8)0x03));
000226 078a LSLS r2,r1,#30
;;;546
;;;547 AFIO->EXTICR[GPIO_PinSource >> 0x02] &= ~tmp;
000228 f021f021 BIC r1,r1,#3
00022c f101f101 ADD r1,r1,#0x40000000
000230 0f12 LSRS r2,r2,#28
000232 230f MOVS r3,#0xf
000234 f501f501 ADD r1,r1,#0x10000
000238 4093 LSLS r3,r3,r2
00023a f8d1f8d1 LDR r12,[r1,#8]
;;;548 AFIO->EXTICR[GPIO_PinSource >> 0x02] |= (((u32)GPIO_PortSource) << (0x04 * (GPIO_PinSource & (u8)0x03)));
00023e fa00fa00 LSL r2,r0,r2
000242 ea2cea2c BIC r0,r12,r3
000246 4310 ORRS r0,r0,r2
;;;549 }
000248 6088 STR r0,[r1,#8]
00024a 4770 BX lr
ENDP
|L1.588|
00024c 40011000 DCD 0x40011000
|L1.592|
000250 40010000 DCD 0x40010000
|L1.596|
000254 42200000 DCD 0x42200000
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -