📄 sleep.txt
字号:
000338 e5900034 LDR r0,[r0,#0x34]
00033c e3c00f80 BIC r0,r0,#0x200
000340 e2811646 ADD r1,r1,#0x4600000
000344 e5810034 STR r0,[r1,#0x34]
;;;83 }
000348 e8bd500f LDMFD sp!,{r0-r3,r12,lr}
00034c e25ef004 SUBS pc,lr,#4
|L1.848|
000350 0000002e DCB ".\0\0\0"
ENDP
Set_SleepKey PROC
;;;90 void Set_SleepKey()
;;;91 {
000354 e92d4008 STMFD sp!,{r3,lr}
;;;92 Uart_Printf("Write sleep-key into internal alive-SRAM. \n");
000358 e28f0024 ADR r0,|L1.900|
00035c ebfffffe BL _printf
;;;93
;;;94 rALIVECON |= 1<<3;
000360 e51f02bc LDR r0,|L1.172|
000364 e5900044 LDR r0,[r0,#0x44]
000368 e3800008 ORR r0,r0,#8
00036c e51f12c8 LDR r1,|L1.172|
000370 e5810044 STR r0,[r1,#0x44]
;;;95 //SRAMKey_Sleep0 = 0xaaaa5555; //Sleep key0
;;;96 //SRAMKey_Sleep1 = 0x5555aaaa; //Sleep key1
;;;97 SRAMKey_Count = 0x0; //Repeat test counter
000374 e3a00000 MOV r0,#0
000378 e1c11000 BIC r1,r1,r0
00037c e5810084 STR r0,[r1,#0x84]
;;;98 //SRAMKey_Run = //Restart pointer
;;;99 }
000380 e8bd8008 LDMFD sp!,{r3,pc}
|L1.900|
000384 74697257 DCB "Writ"
000388 6c732065 DCB "e sl"
00038c 2d706565 DCB "eep-"
000390 2079656b DCB "key "
000394 6f746e69 DCB "into"
000398 746e6920 DCB " int"
00039c 616e7265 DCB "erna"
0003a0 6c61206c DCB "l al"
0003a4 2d657669 DCB "ive-"
0003a8 4d415253 DCB "SRAM"
0003ac 000a202e DCB ". \n\0"
ENDP
Clear_SleepKey PROC
;;;101 void Clear_SleepKey(void)
;;;102 {
0003b0 e92d4010 STMFD sp!,{r4,lr}
;;;103 int i;
;;;104 int error=0;
0003b4 e3a04000 MOV r4,#0
;;;105 Uart_Printf("Erase sleep-keys in the internal SRAM.\n");
0003b8 e28f002c ADR r0,|L1.1004|
0003bc ebfffffe BL _printf
;;;106
;;;107 //SRAMKey_Sleep0 = 0;
;;;108 //SRAMKey_Sleep1 = 0;
;;;109 SRAMKey_Count = 0;
0003c0 e3a00000 MOV r0,#0
0003c4 e51f1320 LDR r1,|L1.172|
0003c8 e5810084 STR r0,[r1,#0x84]
;;;110 SRAMKey_Run = 0;
0003cc e3a00000 MOV r0,#0
0003d0 e1c11000 BIC r1,r1,r0
0003d4 e5810088 STR r0,[r1,#0x88]
;;;111
;;;112 rALIVECON &= 0x1;
0003d8 e1c10000 BIC r0,r1,r0
0003dc e5900044 LDR r0,[r0,#0x44]
0003e0 e2000001 AND r0,r0,#1
0003e4 e5810044 STR r0,[r1,#0x44]
;;;113 }
0003e8 e8bd8010 LDMFD sp!,{r4,pc}
|L1.1004|
0003ec 73617245 DCB "Eras"
0003f0 6c732065 DCB "e sl"
0003f4 2d706565 DCB "eep-"
0003f8 7379656b DCB "keys"
0003fc 206e6920 DCB " in "
000400 20656874 DCB "the "
000404 65746e69 DCB "inte"
000408 6c616e72 DCB "rnal"
00040c 41525320 DCB " SRA"
000410 000a2e4d DCB "M.\n\0"
ENDP
ConfigSleepGPIO PROC
;;;115 void ConfigSleepGPIO(void)
;;;116 {
000414 e92d4008 STMFD sp!,{r3,lr}
;;;117 // Check point
;;;118 // 1) NC pin: input pull-up on
;;;119 // 2) If input is drived externally: input pull-up off
;;;120 // 3) If a connected component draws some current: output low.
;;;121 // 4) If a connected component draws no current: output high.
;;;122 // 5) UART Tx: Output(H) and enable pull-up
;;;123 // UART Rx: Input and disable pull-up
;;;124
;;;125 //CAUTION:Follow the configuration order for setting the ports.
;;;126 // 1) setting value(GPnDAT)
;;;127 // 2) setting control register(GPnCON)
;;;128 // 3) configure pull-up resistor(GPnUP)
;;;129
;;;130 //rRSTCNT= 35; // 83.3*2048*RSTCNT Value = 6ms
;;;131 //rALIVECON=1; // 32768HZ
;;;132 //rRSTCNT = 1; // 83.3*2048*1 = 62.5ms
;;;133
;;;134 //Initialize rEXTINTC0,rEXTINTC1,rEXTINTC2
;;;135 rEINTMASK=0xfffff;
000418 e59f00f8 LDR r0,|L1.1304|
00041c e51f1378 LDR r1,|L1.172|
000420 e5810034 STR r0,[r1,#0x34]
;;;136 rEXTINTC0=0x0;
000424 e3a00000 MOV r0,#0
000428 e1c11000 BIC r1,r1,r0
00042c e5810018 STR r0,[r1,#0x18]
;;;137 rEXTINTC1=0x100;
000430 e3a00f40 MOV r0,#0x100
000434 e1c11000 BIC r1,r1,r0
000438 e581001c STR r0,[r1,#0x1c]
;;;138 rEXTINTC2=0x0;
00043c e3a00000 MOV r0,#0
000440 e1c11000 BIC r1,r1,r0
000444 e5810020 STR r0,[r1,#0x20]
;;;139
;;;140 //GPIO configuration in Sleep mode(These value should be modified suitably for your system)
;;;141 //GP5 has some problem so....
;;;142 //Ports :GP31 GP30 GP29 GP28 GP27 GP26 GP25 GP24 GP23 GP22 GP21 GP20 GP19 GP18 GP17 GP16
;;;143 //GPDAT :0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
;;;144 //GPOEN :i O O i i i i i i i i i i i i i
;;;145 //GPPU :x o o x x x x x x x x x x x o o
;;;146 //-------------------------------------------------------------------------------------------
;;;147 //Ports :GP15 GP14 GP13 GP12 GP11 GP10 GP09 GP08 GP07 GP06 GP05 GP04 GP03 GP02 GP01 GP00
;;;148 //GPDAT :0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
;;;149 //GPOEN :i i i i i i i i i i i i i i i i
;;;150 //GPPU :o x o x x o x o x x x x o o x x
;;;151 rGPDAT_SLEEP = (1<<30)|(1<<29);
000448 e3a00460 MOV r0,#0x60000000
00044c e240156e SUB r1,r0,#0x1b800000
000450 e5810048 STR r0,[r1,#0x48]
;;;152 rGPOEN_SLEEP = ~( (1<<30)|(1<<29) );
000454 e3e00460 MVN r0,#0x60000000
000458 e00110c0 AND r1,r1,r0,ASR #1
00045c e581004c STR r0,[r1,#0x4c]
;;;153 rGPPU_SLEEP =0x9ffc5af3;
000460 e59f00b4 LDR r0,|L1.1308|
000464 e00110c0 AND r1,r1,r0,ASR #1
000468 e5810050 STR r0,[r1,#0x50]
;;;154 Uart_Printf("\n\n@@@ rGPDAT_SLEEP=0x%x\n",rGPDAT_SLEEP);
00046c e00100c0 AND r0,r1,r0,ASR #1
000470 e5900048 LDR r0,[r0,#0x48]
000474 e1a01000 MOV r1,r0
000478 e28f00a0 ADR r0,|L1.1312|
00047c ebfffffe BL _printf
;;;155 Uart_Printf("@@@ rGPOEN_SLEEP=0x%x\n",rGPOEN_SLEEP);
000480 e51f03dc LDR r0,|L1.172|
000484 e590004c LDR r0,[r0,#0x4c]
000488 e1a01000 MOV r1,r0
00048c e28f00a8 ADR r0,|L1.1340|
000490 ebfffffe BL _printf
;;;156 Uart_Printf("@@@ rGPPU_SLEEP=0x%x\n\n",rGPPU_SLEEP);
000494 e51f03f0 LDR r0,|L1.172|
000498 e5900050 LDR r0,[r0,#0x50]
00049c e1a01000 MOV r1,r0
0004a0 e28f00ac ADR r0,|L1.1364|
0004a4 ebfffffe BL _printf
;;;157
;;;158 //Set output value during SLEEP mode
;;;159 rPERIDAT_SLEEP0=0x80913202; //1000, 0000, 1001, 0001 \ 0011, 0010, 0000, 0010
0004a8 e59f00bc LDR r0,|L1.1388|
0004ac e51f1408 LDR r1,|L1.172|
0004b0 e5810054 STR r0,[r1,#0x54]
;;;160 rPERIDAT_SLEEP1=0x28; // 0100, 1000
0004b4 e3a00028 MOV r0,#0x28
0004b8 e1c11000 BIC r1,r1,r0
0004bc e5810058 STR r0,[r1,#0x58]
;;;161
;;;162 //Enable the output during SLEEP mode
;;;163 rPERIOEN_SLEEP0=0x1f73c3; // 0001, 1111 \ 0111, 0011, 1100, 0011
0004c0 e59f00a8 LDR r0,|L1.1392|
0004c4 e1c11000 BIC r1,r1,r0
0004c8 e581005c STR r0,[r1,#0x5c]
;;;164 rPERIOEN_SLEEP1=0x300000; // 0011, 0000 \ 0000, 0000, 0000, 0000
0004cc e3a009c0 MOV r0,#0x300000
0004d0 e1c11000 BIC r1,r1,r0
0004d4 e5810060 STR r0,[r1,#0x60]
;;;165
;;;166 //Configure pull-up during SLEEP mode
;;;167 rPERIPU_SLEEP=0x5000f00; // 0101, 0000, 0000 \ 0000, 1111, 0000, 0000
0004d8 e59f0094 LDR r0,|L1.1396|
0004dc e1c11140 BIC r1,r1,r0,ASR #2
0004e0 e5810064 STR r0,[r1,#0x64]
;;;168
;;;169 rALIVECON |= (1<<0);//Alive block uses RTC clk
0004e4 e1c10140 BIC r0,r1,r0,ASR #2
0004e8 e5900044 LDR r0,[r0,#0x44]
0004ec e3800001 ORR r0,r0,#1
0004f0 e5810044 STR r0,[r1,#0x44]
;;;170
;;;171 rRSTCNT= 0x10; //about 1sec
0004f4 e3a00010 MOV r0,#0x10
0004f8 e1c11000 BIC r1,r1,r0
0004fc e5810068 STR r0,[r1,#0x68]
;;;172
;;;173
;;;174 //rPERIOEN_SLEEP0 &= ( ~(1<<8) & ~(1<<6) );
;;;175 Uart_Printf("\n @@@PERIOEN_SLEEP0=0x%x @@@\n\n", rPERIOEN_SLEEP0);
000500 e1c10000 BIC r0,r1,r0
000504 e590005c LDR r0,[r0,#0x5c]
000508 e1a01000 MOV r1,r0
00050c e28f0064 ADR r0,|L1.1400|
000510 ebfffffe BL _printf
;;;176
;;;177
;;;178 /*
;;;179 //Set output value during SLEEP mode
;;;180 rDATRinSLEEP0=0x80912222;//1000, 0000, 1001, 0001 \ 0010, 0010, 0010, 0010
;;;181 rDATRinSLEEP1=0x00040010;//0000, 0000, 0000, 0100 \ 0000, 0000, 0001, 0000
;;;182
;;;183 //Configure pull-up during SLEEP mode
;;;184 rENPUinSLEEP =0x050f0600;//0000, 0101, 0000, 1111 \ 0000, 0110, 0000, 0000
;;;185
;;;186
;;;187 #if XTAL_ENABLE_SLEEPMODE//Xtal is enabled during SLEEP mode
;;;188 //Set power settle down time
;;;189 rALIVECON=0; // 12MHZ, 83.3ns
;;;190 //rRSTCNT= 0x1; // 83.3*2048*RSTCNT Value = 6ms
;;;191 rRSTCNT= 0x50;
;;;192 rOENinSLEEP0=(1<<21)|(1<<20)| //XmiDATA[7:0] | XeaHREADY
;;;193 (1<<19)|(1<<18)|(1<<17)|(1<<16)| //XeaHDATA[31:0] | XeaHADDR[31:0] | XeaHWRITE,SIZE[2:0] | XeaHTRANS[1:0],BURST[2:0]
;;;194 (0<<15)|(1<<14)|(1<<13)|(1<<12)| //XjTDO | XsXTOUT | XsdDAT[3:0] | XmsSDIO
;;;195 (0<<11)|(0<<10)|(1<< 9)|(0<< 8)| //XvSD | XvVD[23:0] | UdSUSPND | UdOEN
;;;196 (1<< 7)|(0<< 6)|(0<< 5)|(0<< 4)| //usSUSPND | usOEN[1:0] | XspiCLK,MISO,MOSI | X2sLRCK,CLK
;;;197 (0<< 3)|(1<< 2)|(1<< 1)|(1<< 0); //Reserved | XdDATA[31:0] | XpDATA[31:0] | XrDATA[31:0]
;;;198 #else
;;;199 //Set power settle down time
;;;200 rALIVECON=1; // 32.768KHZ,
;;;201 rRSTCNT= 0x10; //about 1sec
;;;202 //rRSTCNT= 0xff; //Boaz
;;;203 //rRSTCNT= 0x0; //Boaz
;;;204 //rRSTCNT= 0x80; //Boaz
;;;205 rOENinSLEEP0=(1<<21)|(1<<20)| //XmiDATA[7:0] | XeaHREADY
;;;206 (1<<19)|(1<<18)|(1<<17)|(1<<16)| //XeaHDATA[31:0] | XeaHADDR[31:0] | XeaHWRITE,SIZE[2:0] | XeaHTRANS[1:0],BURST[2:0]
;;;207 (0<<15)|(0<<14)|(1<<13)|(1<<12)| //XjTDO | XsXTOUT | XsdDAT[3:0] | XmsSDIO
;;;208 (0<<11)|(0<<10)|(1<< 9)|(0<< 8)| //XvSD | XvVD[23:0] | UdSUSPND | UdOEN
;;;209 (1<< 7)|(0<< 6)|(0<< 5)|(0<< 4)| //usSUSPND | usOEN[1:0] | XspiCLK,MISO,MOSI | X2sLRCK,CLK
;;;210 (0<< 3)|(1<< 2)|(1<< 1)|(1<< 0); //Reserved | XdDATA[31:0] | XpDATA[31:0] | XrDATA[31:0]
;;;211 #endif
;;;212 */
;;;213 }
000514 e8bd8008 LDMFD sp!,{r3,pc}
|L1.1304|
000518 000fffff DCD 0x000fffff
|L1.1308|
00051c 9ffc5af3 DCD 0x9ffc5af3
|L1.1312|
000520 40400a0a DCB "\n\n@@"
000524 47722040 DCB "@ rG"
000528 54414450 DCB "PDAT"
00052c 454c535f DCB "_SLE"
000530 303d5045 DCB "EP=0"
000534 0a782578 DCB "x%x\n"
000538 00000000 DCB "\0\0\0\0"
|L1.1340|
00053c 20404040 DCB "@@@ "
000540 4f504772 DCB "rGPO"
000544 535f4e45 DCB "EN_S"
000548 5045454c DCB "LEEP"
00054c 2578303d DCB "=0x%"
000550 00000a78 DCB "x\n\0\0"
|L1.1364|
000554 20404040 DCB "@@@ "
000558 50504772 DCB "rGPP"
00055c 4c535f55 DCB "U_SL"
000560 3d504545 DCB "EEP="
000564 78257830 DCB "0x%x"
000568 00000a0a DCB "\n\n\0\0"
|L1.1388|
00056c 80913202 DCD 0x80913202
|L1.1392|
000570 001f73c3 DCD 0x001f73c3
|L1.1396|
000574 05000f00 DCD 0x05000f00
|L1.1400|
000578 4040200a DCB "\n @@"
00057c 52455040 DCB "@PER"
000580 4e454f49 DCB "IOEN"
000584 454c535f DCB "_SLE"
000588 3d305045 DCB "EP0="
00058c 78257830 DCB "0x%x"
000590 40404020 DCB " @@@"
000594 00000a0a DCB "\n\n\0\0"
ENDP
Test_SleepMode PROC
;;;215 void Test_SleepMode(void)
;;;216 {
000598 e92d4008 STMFD sp!,{r3,lr}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -