📄 xllp_gpio.cod
字号:
000a0 eb000000 bl XllpLock
; 218 : pGPIO->GPDR3=((pGPIO->GPDR3| aMask3)&~XLLP_GPIO_PIN_RESERVED_BITS);
000a4 e594310c ldr r3, [r4, #0x10C]
000a8 e183300b orr r3, r3, r11
000ac e3c334fe bic r3, r3, #0xFE, 8
000b0 e584310c str r3, [r4, #0x10C]
; 219 : XllpUnlock(LockID);
000b4 eb000000 bl XllpUnlock
000b8 |$L781|
; 220 : }
; 221 : if(aSet2)
000b8 e3550000 cmp r5, #0
000bc 0a000005 beq |$L782|
; 222 : {
; 223 : LockID = XllpLock(GPDR2);
000c0 e3a00006 mov r0, #6
000c4 eb000000 bl XllpLock
; 224 : pGPIO->GPDR2=((pGPIO->GPDR2)| aMask2);
000c8 e5943014 ldr r3, [r4, #0x14]
; 225 : XllpUnlock(LockID);
000cc e1833008 orr r3, r3, r8
000d0 e5843014 str r3, [r4, #0x14]
000d4 eb000000 bl XllpUnlock
000d8 |$L782|
; 226 : }
; 227 : if(aSet1)
000d8 e3560000 cmp r6, #0
000dc 0a000005 beq |$L783|
; 228 : {
; 229 : LockID = XllpLock(GPDR1);
000e0 e3a00005 mov r0, #5
000e4 eb000000 bl XllpLock
; 230 : pGPIO->GPDR1=((pGPIO->GPDR1)| aMask1);
000e8 e5943010 ldr r3, [r4, #0x10]
; 231 : XllpUnlock(LockID);
000ec e183300a orr r3, r3, r10
000f0 e5843010 str r3, [r4, #0x10]
000f4 eb000000 bl XllpUnlock
000f8 |$L783|
; 232 : }
; 233 : if(aSet0)
000f8 e3570000 cmp r7, #0
000fc 0a000005 beq |$L784|
; 234 : {
; 235 : LockID = XllpLock(GPDR0);
00100 e3a00004 mov r0, #4
00104 eb000000 bl XllpLock
; 236 : pGPIO->GPDR0=((pGPIO->GPDR0)| aMask0);
00108 e594300c ldr r3, [r4, #0xC]
; 237 : XllpUnlock(LockID);
0010c e1833009 orr r3, r3, r9
00110 e584300c str r3, [r4, #0xC]
00114 eb000000 bl XllpUnlock
00118 |$L784|
; 238 : }
; 239 : }
00118 e28dd004 add sp, sp, #4
0011c e8bd4ff0 ldmia sp!, {r4 - r11, lr}
00120 e12fff1e bx lr
00124 |$M1285|
ENDP ; |XllpGpioSetDirectionOut|
EXPORT |XllpGpioSetOutputState1|
00000 AREA |.text| { |XllpGpioSetOutputState1| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$XllpGpioSetOutputState1|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpGpioSetOutputState1| } ; comdat associative
|$T1308| DCD |$L1307|
DCD 0x40002f02
; Function compile flags: /Ogsy
00000 AREA |.text| { |XllpGpioSetOutputState1| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |XllpGpioSetOutputState1| PROC
; 249 : {
00000 |$L1307|
00000 e92d4ff0 stmdb sp!, {r4 - r11, lr}
00004 e24dd004 sub sp, sp, #4
00008 |$M1305|
00008 e58d0000 str r0, [sp]
; 250 : XLLP_UINT32_T aGpioPinMask;
; 251 : XLLP_UINT32_T aSizeArray;
; 252 : XLLP_UINT32_T aMask0, aMask1, aMask2, aMask3;
; 253 : XLLP_BOOL_T aSet0, aSet1, aSet2, aSet3;
; 254 : XLLP_UINT32_T i;
; 255 :
; 256 : //determine size of array
; 257 : aSizeArray = aGpioPinArray[0];
0000c e5917000 ldr r7, [r1]
; 258 : aMask0=aMask1=aMask2=aMask3=0;
00010 e3a05000 mov r5, #0
00014 e3a06000 mov r6, #0
; 259 : aSet0=aSet1=aSet2=aSet3=XLLP_FALSE;
; 260 :
; 261 : for(i=1; i<=aSizeArray; i++)
00018 e3570001 cmp r7, #1
0001c e3a04000 mov r4, #0
00020 e3a0e000 mov lr, #0
00024 e3a09000 mov r9, #0
00028 e3a0b000 mov r11, #0
0002c e3a0a000 mov r10, #0
00030 e3a08000 mov r8, #0
00034 3a00001d bcc |$L813|
00038 e2811004 add r1, r1, #4
0003c e3a00001 mov r0, #1
00040 |$L801|
; 262 : {
; 263 : aGpioPinMask = 0x1u << (aGpioPinArray[i] & 0x1F);
00040 e5913000 ldr r3, [r1]
00044 e203201f and r2, r3, #0x1F
; 264 : if(aGpioPinArray[i] > 95)
00048 e353005f cmp r3, #0x5F
; 265 : {
; 266 : aMask3 |= aGpioPinMask;
0004c 81855210 orrhi r5, r5, r0, lsl r2
; 267 : aSet3=XLLP_TRUE;
00050 83a09001 movhi r9, #1
00054 8a000009 bhi |$L802|
; 268 : }
; 269 : else if(aGpioPinArray[i] > 63)
00058 e5913000 ldr r3, [r1]
0005c e353003f cmp r3, #0x3F
; 270 : {
; 271 : aMask2 |= aGpioPinMask;
00060 81866210 orrhi r6, r6, r0, lsl r2
; 272 : aSet2=XLLP_TRUE;
00064 83a0b001 movhi r11, #1
00068 8a000004 bhi |$L802|
; 273 : }
; 274 : else if(aGpioPinArray[i] > 31)
0006c e353001f cmp r3, #0x1F
; 275 : {
; 276 : aMask1 |= aGpioPinMask;
00070 81844210 orrhi r4, r4, r0, lsl r2
; 277 : aSet1=XLLP_TRUE;
00074 83a0a001 movhi r10, #1
; 278 : }
; 279 : else
; 280 : {
; 281 : aMask0 |= aGpioPinMask;
00078 918ee210 orrls lr, lr, r0, lsl r2
; 282 : aSet0=XLLP_TRUE;
0007c 93a08001 movls r8, #1
00080 |$L802|
00080 e2811004 add r1, r1, #4
00084 e2577001 subs r7, r7, #1
00088 1affffec bne |$L801|
; 283 : }
; 284 : }
; 285 : if(aSet3)
0008c e59d0000 ldr r0, [sp]
00090 e3590000 cmp r9, #0
; 286 : pGPIO->GPSR3=aMask3;
00094 15805118 strne r5, [r0, #0x118]
; 287 : if(aSet2)
00098 e35b0000 cmp r11, #0
; 288 : pGPIO->GPSR2=aMask2;
0009c 15806020 strne r6, [r0, #0x20]
; 289 : if(aSet1)
000a0 e35a0000 cmp r10, #0
; 290 : pGPIO->GPSR1=aMask1;
000a4 1580401c strne r4, [r0, #0x1C]
; 291 : if(aSet0)
000a8 e3580000 cmp r8, #0
; 292 : pGPIO->GPSR0=aMask0;
000ac 1580e018 strne lr, [r0, #0x18]
000b0 |$L813|
; 293 : }
000b0 e28dd004 add sp, sp, #4
000b4 e8bd4ff0 ldmia sp!, {r4 - r11, lr}
000b8 e12fff1e bx lr
000bc |$M1306|
ENDP ; |XllpGpioSetOutputState1|
EXPORT |XllpGpioSetOutput0|
00000 AREA |.text| { |XllpGpioSetOutput0| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$XllpGpioSetOutput0|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpGpioSetOutput0| } ; comdat associative
|$T1329| DCD |$L1328|
DCD 0x40002f02
; Function compile flags: /Ogsy
00000 AREA |.text| { |XllpGpioSetOutput0| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |XllpGpioSetOutput0| PROC
; 303 : {
00000 |$L1328|
00000 e92d4ff0 stmdb sp!, {r4 - r11, lr}
00004 e24dd004 sub sp, sp, #4
00008 |$M1326|
00008 e58d0000 str r0, [sp]
; 304 : XLLP_UINT32_T aGpioPinMask;
; 305 : XLLP_UINT32_T aSizeArray;
; 306 : XLLP_UINT32_T aMask0, aMask1, aMask2, aMask3;
; 307 : XLLP_BOOL_T aSet0, aSet1, aSet2, aSet3;
; 308 : XLLP_UINT32_T i;
; 309 :
; 310 : //determine size of array
; 311 : aSizeArray = aGpioPinArray[0];
0000c e5917000 ldr r7, [r1]
; 312 : aMask0=aMask1=aMask2=aMask3=0;
00010 e3a05000 mov r5, #0
00014 e3a06000 mov r6, #0
; 313 : aSet0=aSet1=aSet2=aSet3=XLLP_FALSE;
; 314 :
; 315 : for(i=1; i<=aSizeArray; i++)
00018 e3570001 cmp r7, #1
0001c e3a04000 mov r4, #0
00020 e3a0e000 mov lr, #0
00024 e3a09000 mov r9, #0
00028 e3a0b000 mov r11, #0
0002c e3a0a000 mov r10, #0
00030 e3a08000 mov r8, #0
00034 3a00001d bcc |$L842|
00038 e2811004 add r1, r1, #4
0003c e3a00001 mov r0, #1
00040 |$L830|
; 316 : {
; 317 : aGpioPinMask = 0x1u << (aGpioPinArray[i] & 0x1F);
00040 e5913000 ldr r3, [r1]
00044 e203201f and r2, r3, #0x1F
; 318 : if(aGpioPinArray[i] > 95)
00048 e353005f cmp r3, #0x5F
; 319 : {
; 320 : aMask3 |= aGpioPinMask;
0004c 81855210 orrhi r5, r5, r0, lsl r2
; 321 : aSet3=XLLP_TRUE;
00050 83a09001 movhi r9, #1
00054 8a000009 bhi |$L831|
; 322 : }
; 323 : else if(aGpioPinArray[i] > 63)
00058 e5913000 ldr r3, [r1]
0005c e353003f cmp r3, #0x3F
; 324 : {
; 325 : aMask2 |= aGpioPinMask;
00060 81866210 orrhi r6, r6, r0, lsl r2
; 326 : aSet2=XLLP_TRUE;
00064 83a0b001 movhi r11, #1
00068 8a000004 bhi |$L831|
; 327 : }
; 328 : else if(aGpioPinArray[i] > 31)
0006c e353001f cmp r3, #0x1F
; 329 : {
; 330 : aMask1 |= aGpioPinMask;
00070 81844210 orrhi r4, r4, r0, lsl r2
; 331 : aSet1=XLLP_TRUE;
00074 83a0a001 movhi r10, #1
; 332 : }
; 333 : else
; 334 : {
; 335 : aMask0 |= aGpioPinMask;
00078 918ee210 orrls lr, lr, r0, lsl r2
; 336 : aSet0=XLLP_TRUE;
0007c 93a08001 movls r8, #1
00080 |$L831|
00080 e2811004 add r1, r1, #4
00084 e2577001 subs r7, r7, #1
00088 1affffec bne |$L830|
; 337 : }
; 338 : }
; 339 : if(aSet3)
0008c e59d0000 ldr r0, [sp]
00090 e3590000 cmp r9, #0
; 340 : pGPIO->GPCR3=aMask3;
00094 15805124 strne r5, [r0, #0x124]
; 341 : if(aSet2)
00098 e35b0000 cmp r11, #0
; 342 : pGPIO->GPCR2=aMask2;
0009c 1580602c strne r6, [r0, #0x2C]
; 343 : if(aSet1)
000a0 e35a0000 cmp r10, #0
; 344 : pGPIO->GPCR1=aMask1;
000a4 15804028 strne r4, [r0, #0x28]
; 345 : if(aSet0)
000a8 e3580000 cmp r8, #0
; 346 : pGPIO->GPCR0=aMask0;
000ac 1580e024 strne lr, [r0, #0x24]
000b0 |$L842|
; 347 : }
000b0 e28dd004 add sp, sp, #4
000b4 e8bd4ff0 ldmia sp!, {r4 - r11, lr}
000b8 e12fff1e bx lr
000bc |$M1327|
ENDP ; |XllpGpioSetOutput0|
EXPORT |XllpGpioGetRisingDetectEnable|
00000 AREA |.text| { |XllpGpioGetRisingDetectEnable| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$XllpGpioGetRisingDetectEnable|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpGpioGetRisingDetectEnable| } ; comdat associative
|$T1342| DCD |$L1341|
DCD 0x40000f01
; Function compile flags: /Ogsy
00000 AREA |.text| { |XllpGpioGetRisingDetectEnable| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |XllpGpioGetRisingDetectEnable| PROC
; 358 : {
00000 |$L1341|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M1339|
; 359 :
; 360 : XLLP_UINT32_T aGpioPinMask;
; 361 :
; 362 : aGpioPinMask = 0x1 << (aGpioPin & 0x1F);
; 363 :
; 364 : if(aGpioPin > 95)
00004 e351005f cmp r1, #0x5F
; 365 : return (pGPIO->GRER3& aGpioPinMask);
00008 85903130 ldrhi r3, [r0, #0x130]
0000c e201201f and r2, r1, #0x1F
00010 e3a0e001 mov lr, #1
00014 8a000005 bhi |$L1338|
; 366 : else if(aGpioPin > 63)
00018 e351003f cmp r1, #0x3F
; 367 : return (pGPIO->GRER2 & aGpioPinMask);
0001c 85903038 ldrhi r3, [r0, #0x38]
00020 8a000002 bhi |$L1338|
; 368 : else if(aGpioPin > 31)
00024 e351001f cmp r1, #0x1F
; 369 : return (pGPIO->GRER1 & aGpioPinMask);
00028 85903034 ldrhi r3, [r0, #0x34]
; 370 : else return (pGPIO->GRER0 & aGpioPinMask);
0002c 95903030 ldrls r3, [r0, #0x30]
00030 |$L1338|
00030 e003021e and r0, r3, lr, lsl r2
; 371 : }
00034 e49de004 ldr lr, [sp], #4
00038 e12fff1e bx lr
0003c |$M1340|
ENDP ; |XllpGpioGetRisingDetectEnable|
EXPORT |XllpGpioSetRisingDetectDisable|
00000 AREA |.text| { |XllpGpioSetRisingDetectDisable| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$XllpGpioSetRisingDetectDisable|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpGpioSetRisingDetectDisable| } ; comdat associative
|$T1367| DCD |$L1366|
DCD 0x40004902
; Function compile flags: /Ogsy
00000 AREA |.text| { |XllpGpioSetRisingDetectDisable| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |XllpGpioSetRisingDetectDisable| PROC
; 380 : {
00000 |$L1366|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -