📄 power.txt
字号:
; generated by ARM C Compiler, ADS1.2 [Build 805]
; commandline [-errors .\err\power.err -O0 -asm -g+ -cpu 5TEJ -fs -Wd -Ec -I.\include "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
CODE32
AREA ||.text||, CODE, READONLY
Ch33_Power_Test PROC
;;;53 void Ch33_Power_Test(void)
;;;54 {
|L1.0|
000000 e92d4010 STMFD sp!,{r4,lr}
;;;55 int i;
;;;56
;;;57 Uart_Printf("\nPower mode test.\n");
000004 e28f00bc ADR r0,|L1.200|
000008 ebfffffe BL _printf
;;;58
;;;59 while(1)
00000c e1a00000 NOP
|L1.16|
000010 e1a00000 NOP
;;;60 {
;;;61 i=0;
000014 e3a04000 MOV r4,#0
;;;62 Uart_Printf("\n\n");
000018 e28f00bc ADR r0,|L1.220|
00001c ebfffffe BL _printf
;;;63 while(1)
000020 e1a00000 NOP
|L1.36|
000024 e1a00000 NOP
;;;64 { //display menu
;;;65 Uart_Printf("%2d:%s",i,func_power_test[i][1]);
000028 e59f00b0 LDR r0,|L1.224|
00002c e0800184 ADD r0,r0,r4,LSL #3
000030 e1a01004 MOV r1,r4
000034 e5902004 LDR r2,[r0,#4]
000038 e28f00a4 ADR r0,|L1.228|
00003c ebfffffe BL _printf
;;;66 i++;
000040 e2844001 ADD r4,r4,#1
;;;67 if((int)(func_power_test[i][0])==0)
000044 e59f0094 LDR r0,|L1.224|
000048 e7900184 LDR r0,[r0,r4,LSL #3]
00004c e3500000 CMP r0,#0
000050 1a000002 BNE |L1.96|
;;;68 {
;;;69 Uart_Printf("\n");
000054 e28f0090 ADR r0,|L1.236|
000058 ebfffffe BL _printf
;;;70 break;
00005c ea000007 B |L1.128|
;;;71 }
;;;72 if((i%3)==0)
|L1.96|
000060 e1a01004 MOV r1,r4
000064 e3a00003 MOV r0,#3
000068 ebfffffe BL __rt_sdiv
00006c e3510000 CMP r1,#0
000070 1a000001 BNE |L1.124|
;;;73 Uart_Printf("\n");
000074 e28f0070 ADR r0,|L1.236|
000078 ebfffffe BL _printf
;;;74 }
|L1.124|
00007c eaffffe8 B |L1.36|
;;;75
;;;76 Uart_Printf("\nSelect (\"-1\" to exit) : ");
|L1.128|
000080 e28f0068 ADR r0,|L1.240|
000084 ebfffffe BL _printf
;;;77 i = Uart_GetIntNum();
000088 ebfffffe BL Uart_GetIntNum
00008c e1a04000 MOV r4,r0
;;;78 if(i==-1)
000090 e3740001 CMN r4,#1
000094 1a000000 BNE |L1.156|
;;;79 break; // return.
000098 ea000007 B |L1.188|
;;;80 if(i>=0 && (i<((sizeof(func_power_test)-1)/8)) ) // select and execute...
|L1.156|
00009c e3540000 CMP r4,#0
0000a0 ba000004 BLT |L1.184|
0000a4 e3540010 CMP r4,#0x10
0000a8 2a000002 BCS |L1.184|
;;;81 ( (void (*)(void)) (func_power_test[i][0]) )();
0000ac e59f102c LDR r1,|L1.224|
0000b0 e7910184 LDR r0,[r1,r4,LSL #3]
0000b4 e12fff30 BLX r0
;;;82 }
|L1.184|
0000b8 eaffffd4 B |L1.16|
;;;83 Uart_Printf("\nPower_Test program end.\n");
|L1.188|
0000bc e28f0048 ADR r0,|L1.268|
0000c0 ebfffffe BL _printf
;;;84 }
0000c4 e8bd8010 LDMFD sp!,{r4,pc}
|L1.200|
0000c8 776f500a DCB "\nPow"
0000cc 6d207265 DCB "er m"
0000d0 2065646f DCB "ode "
0000d4 74736574 DCB "test"
0000d8 00000a2e DCB ".\n\0\0"
|L1.220|
0000dc 00000a0a DCB "\n\n\0\0"
|L1.224|
0000e0 00000000 DCD func_power_test
|L1.228|
0000e4 3a643225 DCB "%2d:"
0000e8 00007325 DCB "%s\0\0"
|L1.236|
0000ec 0000000a DCB "\n\0\0\0"
|L1.240|
0000f0 6c65530a DCB "\nSel"
0000f4 20746365 DCB "ect "
0000f8 312d2228 DCB "(\"-1"
0000fc 6f742022 DCB "\" to"
000100 69786520 DCB " exi"
000104 3a202974 DCB "t) :"
000108 00000020 DCB " \0\0\0"
|L1.268|
00010c 776f500a DCB "\nPow"
000110 545f7265 DCB "er_T"
000114 20747365 DCB "est "
000118 676f7270 DCB "prog"
00011c 206d6172 DCB "ram "
000120 2e646e65 DCB "end."
000124 0000000a DCB "\n\0\0\0"
ENDP
SlowEint0Int PROC
;;;143 void __irq SlowEint0Int(void)
;;;144 {
000128 e92d0003 STMFD sp!,{r0,r1}
;;;145 rINTMSK=BIT_ALLMSK;
00012c e3e00000 MVN r0,#0
000130 e59f122c LDR r1,|L1.868|
000134 e5810008 STR r0,[r1,#8]
;;;146 rEINTMASK=BIT_EINTPEND_ALLMSK;
000138 e1a00620 MOV r0,r0,LSR #12
00013c e2811646 ADD r1,r1,#0x4600000
000140 e5810034 STR r0,[r1,#0x34]
;;;147 rEINTPEND=BIT_EINTPEND_EINT0;
000144 e3a00001 MOV r0,#1
000148 e1c11000 BIC r1,r1,r0
00014c e5810038 STR r0,[r1,#0x38]
;;;148 ClearPending(BIT_EINT0_2);
000150 e3a00001 MOV r0,#1
000154 e2411646 SUB r1,r1,#0x4600000
000158 e5810000 STR r0,[r1,#0]
00015c e1c10000 BIC r0,r1,r0
000160 e5900010 LDR r0,[r0,#0x10]
000164 e5810010 STR r0,[r1,#0x10]
000168 e1a00001 MOV r0,r1
00016c e5900010 LDR r0,[r0,#0x10]
;;;149 slowExit=1;
000170 e3a00001 MOV r0,#1
000174 e59f11ec LDR r1,|L1.872|
000178 e5810000 STR r0,[r1,#0] ; slowExit
;;;150 }
00017c e8bd0003 LDMFD sp!,{r0,r1}
000180 e25ef004 SUBS pc,lr,#4
ENDP
Test_SlowMode PROC
;;;86 void Test_SlowMode(void)
;;;87 {
000184 e92d4070 STMFD sp!,{r4-r6,lr}
;;;88 int i;
;;;89 unsigned int saveLCD;
;;;90 unsigned int saveREFRESH;
;;;91
;;;92 slowExit=0;
000188 e3a00000 MOV r0,#0
00018c e59f11d4 LDR r1,|L1.872|
000190 e5810000 STR r0,[r1,#0] ; slowExit
;;;93 saveREFRESH=rSDRAM_REFRESH;
000194 e59f01d0 LDR r0,|L1.876|
000198 e5900008 LDR r0,[r0,#8]
00019c e1a06000 MOV r6,r0
;;;94 saveLCD=rLCDCON1;
0001a0 e3a0044a MOV r0,#0x4a000000
0001a4 e5900000 LDR r0,[r0,#0]
0001a8 e1a05000 MOV r5,r0
;;;95
;;;96 rGPCON_L=( rGPCON_L & ~(3<<0) ) |(2<<0); //GP0=EINT0
0001ac e59f01bc LDR r0,|L1.880|
0001b0 e5900008 LDR r0,[r0,#8]
0001b4 e3c00003 BIC r0,r0,#3
0001b8 e3800002 ORR r0,r0,#2
0001bc e59f11ac LDR r1,|L1.880|
0001c0 e5810008 STR r0,[r1,#8]
;;;97 rEXTINTC0=( rEXTINTC0 & ~(7<<0) ) |(2<<0); //EINT0=falling edge triggered
0001c4 e1a00001 MOV r0,r1
0001c8 e5900018 LDR r0,[r0,#0x18]
0001cc e3c00007 BIC r0,r0,#7
0001d0 e3800002 ORR r0,r0,#2
0001d4 e5810018 STR r0,[r1,#0x18]
;;;98
;;;99 pISR_EINT0_2=(U32)SlowEint0Int;
0001d8 e59f0194 LDR r0,|L1.884|
0001dc e59f1194 LDR r1,|L1.888|
0001e0 e5810f20 STR r0,[r1,#0xf20]
;;;100 ClearPending(BIT_EINT0_2);
0001e4 e3a00001 MOV r0,#1
0001e8 e59f1174 LDR r1,|L1.868|
0001ec e5810000 STR r0,[r1,#0]
0001f0 e1c10000 BIC r0,r1,r0
0001f4 e5900010 LDR r0,[r0,#0x10]
0001f8 e5810010 STR r0,[r1,#0x10]
0001fc e1a00001 MOV r0,r1
000200 e5900010 LDR r0,[r0,#0x10]
;;;101 rEINTPEND=BIT_EINTPEND_EINT0;
000204 e3a00001 MOV r0,#1
000208 e2811646 ADD r1,r1,#0x4600000
00020c e5810038 STR r0,[r1,#0x38]
;;;102 rEINTMASK=~BIT_EINTPEND_EINT0;
000210 e3e00001 MVN r0,#1
000214 e0011000 AND r1,r1,r0
000218 e5810034 STR r0,[r1,#0x34]
;;;103 rINTMSK=~BIT_EINT0_2;
00021c e3e00001 MVN r0,#1
000220 e2411646 SUB r1,r1,#0x4600000
000224 e5810008 STR r0,[r1,#8]
;;;104
;;;105 Uart_Printf("[SLOW MODE TEST]\n");
000228 e28f0f53 ADR r0,|L1.892|
00022c ebfffffe BL _printf
;;;106 Uart_Printf(" 1. LEDs are flickered by 200ms period at %dMhz 20 times.\n",FCLK/1000000);
000230 e3a010cc MOV r1,#0xcc
000234 e28f0f55 ADR r0,|L1.912|
000238 ebfffffe BL _printf
;;;107 Uart_Printf(" 2. Entering SLOW mode.\n");
00023c e28f0f62 ADR r0,|L1.972|
000240 ebfffffe BL _printf
;;;108 Uart_Printf(" 3. LEDs are flickered by %fms period at %dMhz until......\n",(float)(200*FCLK/FIN), FCLK/1000000);
000244 e3a030cc MOV r3,#0xcc
000248 e28f0f66 ADR r0,|L1.1000|
00024c e8900006 LDMIA r0,{r1,r2}
000250 e28f0f66 ADR r0,|L1.1008|
000254 ebfffffe BL printf
;;;109 Uart_Printf(" 4. Press EINT0 key to exit SLOW mode\n");
000258 e28f0f74 ADR r0,|L1.1072|
00025c ebfffffe BL _printf
;;;110 Uart_TxEmpty(0); //To avoid being crushed the character
000260 e3a00000 MOV r0,#0
000264 ebfffffe BL Uart_TxEmpty
;;;111
;;;112 for(i=0;i<20;i++)
000268 e3a04000 MOV r4,#0
|L1.620|
00026c e3540014 CMP r4,#0x14
000270 aa00000b BGE |L1.676|
000274 ea000001 B |L1.640|
|L1.632|
000278 e2844001 ADD r4,r4,#1
00027c eafffffa B |L1.620|
;;;113 {
;;;114 Led_Display(0x0);
|L1.640|
000280 e3a00000 MOV r0,#0
000284 ebfffffe BL Led_Display
;;;115 Delay(1000);
000288 e3a00ffa MOV r0,#0x3e8
00028c ebfffffe BL Delay
;;;116 Led_Display(0xf);
000290 e3a0000f MOV r0,#0xf
000294 ebfffffe BL Led_Display
;;;117 Delay(1000);
000298 e3a00ffa MOV r0,#0x3e8
00029c ebfffffe BL Delay
;;;118 }
0002a0 eafffff4 B |L1.632|
;;;119
;;;120 rCLKSRC=(0<<8)|(0<<7)|(1<<5)|(1<<4)|(0); // OnOSC_EN disable,U_PLL on,M_PLL off,External clk,Divider=0
|L1.676|
0002a4 e3a00030 MOV r0,#0x30
0002a8 e3a01440 MOV r1,#0x40000000
0002ac e5810024 STR r0,[r1,#0x24]
;;;121
;;;122 rSDRAM_REFRESH=7.8*(FIN/1000000); // Period= 7.8us
0002b0 e3a0005d MOV r0,#0x5d
0002b4 e28118c4 ADD r1,r1,#0xc40000
0002b8 e5810008 STR r0,[r1,#8]
;;;123 //The other memory control register should be optimized for SLOW mode.
;;;124
;;;125 rLCDCON1&=0xffffffe; // Disable Video output and control signal
0002bc e3a0044a MOV r0,#0x4a000000
0002c0 e5900000 LDR r0,[r0,#0]
0002c4 e3c0037c BIC r0,r0,#0xf0000001
0002c8 e3a0144a MOV r1,#0x4a000000
0002cc e5810000 STR r0,[r1,#0]
;;;126 rLCDCON1=(rLCDCON1 & ~(0x3ff<<8) ) |(1<<0); //Change CLKVAL & Enable ENVID bit
0002d0 e3a0044a MOV r0,#0x4a000000
0002d4 e5900000 LDR r0,[r0,#0]
0002d8 e3c00bc0 BIC r0,r0,#0x30000
0002dc e3c00cff BIC r0,r0,#0xff00
0002e0 e3800001 ORR r0,r0,#1
0002e4 e3a0144a MOV r1,#0x4a000000
0002e8 e5810000 STR r0,[r1,#0]
;;;127
;;;128 while(!slowExit)
0002ec e1a00000 NOP
|L1.752|
0002f0 e59f0070 LDR r0,|L1.872|
0002f4 e5900000 LDR r0,[r0,#0] ; slowExit
0002f8 e3500000 CMP r0,#0
0002fc 1a000008 BNE |L1.804|
;;;129 {
;;;130 Led_Display(0x0);
000300 e3a00000 MOV r0,#0
000304 ebfffffe BL Led_Display
;;;131 Delay(1000);
000308 e3a00ffa MOV r0,#0x3e8
00030c ebfffffe BL Delay
;;;132 Led_Display(0xf);
000310 e3a0000f MOV r0,#0xf
000314 ebfffffe BL Led_Display
;;;133 Delay(1000);
000318 e3a00ffa MOV r0,#0x3e8
00031c ebfffffe BL Delay
;;;134 }
000320 eafffff2 B |L1.752|
;;;135
;;;136 rCLKSRC=(0<<8)|(0<<7)|(0<<5)|(1<<4)|(0); // OnOSC_EN disable,U_PLL on,M_PLL on,External clk,Divider=0
|L1.804|
000324 e3a00010 MOV r0,#0x10
000328 e3a01440 MOV r1,#0x40000000
00032c e5810024 STR r0,[r1,#0x24]
;;;137 for(i=0;i<2048;i++); //S/W MPLL lock-time
000330 e3a04000 MOV r4,#0
|L1.820|
000334 e3540e80 CMP r4,#0x800
000338 aa000001 BGE |L1.836|
00033c e2844001 ADD r4,r4,#1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -