我试图理解某人的代码,他们正在读取 GPIO 区域(0x4002 0000 - 0x4002 03FF)中的内存空间,但它的地址比 GPIO 寄存器高(它们只转到 0x24)。
您可以使用 0x4002 0024 以上和 0x4002 03FFF 以下的所有额外空间吗?如果从这个空间读取会发生什么?
编辑:我完全忘记了我可以发布代码。我将令我头疼的那行加粗:
R0 = 0x15
PUSH {R3,LR} ;
ADD.W R0, R0, R0,LSL#1 ;
MOV GPIO_Port_A_Address, #0x40020000
LSLS R0, R0, #2 ;
ADDS R2, GPIO_Port_A_Address, R0 ;
LDRB R2, [R2,#4] ;
MOVS R1, #1 ;
LSL.W R1, R1, R2 ;
LDR R0,[GPIO_Port_A_Address,R0];
UXTH R1, R1 ;
BL sub_8001ED8 ;
MOVS R0, #0 ;
POP {R3,PC} ;