📄 power.txt
字号:
; generated by ARM C Compiler, ADS1.2 [Build 842]
; 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
;;;57 void Ch33_Power_Test(void)
;;;58 {
|L1.0|
000000 e92d4010 STMFD sp!,{r4,lr}
;;;59 int i;
;;;60
;;;61 Uart_Printf("\nPower mode test.\n");
000004 e28f00bc ADR r0,|L1.200|
000008 ebfffffe BL _printf
;;;62
;;;63 while(1)
00000c e1a00000 NOP
|L1.16|
000010 e1a00000 NOP
;;;64 {
;;;65 i=0;
000014 e3a04000 MOV r4,#0
;;;66 Uart_Printf("\n\n");
000018 e28f00bc ADR r0,|L1.220|
00001c ebfffffe BL _printf
;;;67 while(1)
000020 e1a00000 NOP
|L1.36|
000024 e1a00000 NOP
;;;68 { //display menu
;;;69 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
;;;70 i++;
000040 e2844001 ADD r4,r4,#1
;;;71 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|
;;;72 {
;;;73 Uart_Printf("\n");
000054 e28f0090 ADR r0,|L1.236|
000058 ebfffffe BL _printf
;;;74 break;
00005c ea000007 B |L1.128|
;;;75 }
;;;76 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|
;;;77 Uart_Printf("\n");
000074 e28f0070 ADR r0,|L1.236|
000078 ebfffffe BL _printf
;;;78 }
|L1.124|
00007c eaffffe8 B |L1.36|
;;;79
;;;80 Uart_Printf("\nSelect (\"-1\" to exit) : ");
|L1.128|
000080 e28f0068 ADR r0,|L1.240|
000084 ebfffffe BL _printf
;;;81 i = Uart_GetIntNum();
000088 ebfffffe BL Uart_GetIntNum
00008c e1a04000 MOV r4,r0
;;;82 if(i==-1)
000090 e3740001 CMN r4,#1
000094 1a000000 BNE |L1.156|
;;;83 break; // return.
000098 ea000007 B |L1.188|
;;;84 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 e3540012 CMP r4,#0x12
0000a8 2a000002 BCS |L1.184|
;;;85 ( (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
;;;86 }
|L1.184|
0000b8 eaffffd4 B |L1.16|
;;;87 Uart_Printf("\nPower_Test program end.\n");
|L1.188|
0000bc e28f0048 ADR r0,|L1.268|
0000c0 ebfffffe BL _printf
;;;88 }
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
;;;147 void __irq SlowEint0Int(void)
;;;148 {
000128 e92d0003 STMFD sp!,{r0,r1}
;;;149 rINTMSK=BIT_ALLMSK;
00012c e3e00000 MVN r0,#0
000130 e59f122c LDR r1,|L1.868|
000134 e5810008 STR r0,[r1,#8]
;;;150 rEINTMASK=BIT_EINTPEND_ALLMSK;
000138 e1a00620 MOV r0,r0,LSR #12
00013c e2811646 ADD r1,r1,#0x4600000
000140 e5810034 STR r0,[r1,#0x34]
;;;151 rEINTPEND=BIT_EINTPEND_EINT0;
000144 e3a00001 MOV r0,#1
000148 e1c11000 BIC r1,r1,r0
00014c e5810038 STR r0,[r1,#0x38]
;;;152 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]
;;;153 slowExit=1;
000170 e3a00001 MOV r0,#1
000174 e59f11ec LDR r1,|L1.872|
000178 e5810000 STR r0,[r1,#0] ; slowExit
;;;154 }
00017c e8bd0003 LDMFD sp!,{r0,r1}
000180 e25ef004 SUBS pc,lr,#4
ENDP
Test_SlowMode PROC
;;;90 void Test_SlowMode(void)
;;;91 {
000184 e92d4070 STMFD sp!,{r4-r6,lr}
;;;92 int i;
;;;93 unsigned int saveLCD;
;;;94 unsigned int saveREFRESH;
;;;95
;;;96 slowExit=0;
000188 e3a00000 MOV r0,#0
00018c e59f11d4 LDR r1,|L1.872|
000190 e5810000 STR r0,[r1,#0] ; slowExit
;;;97 saveREFRESH=rSDRAM_REFRESH;
000194 e59f01d0 LDR r0,|L1.876|
000198 e5900008 LDR r0,[r0,#8]
00019c e1a06000 MOV r6,r0
;;;98 saveLCD=rLCDCON1;
0001a0 e3a0044a MOV r0,#0x4a000000
0001a4 e5900000 LDR r0,[r0,#0]
0001a8 e1a05000 MOV r5,r0
;;;99
;;;100 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]
;;;101 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]
;;;102
;;;103 pISR_EINT0_2=(U32)SlowEint0Int;
0001d8 e59f0194 LDR r0,|L1.884|
0001dc e59f1194 LDR r1,|L1.888|
0001e0 e5810f20 STR r0,[r1,#0xf20]
;;;104 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]
;;;105 rEINTPEND=BIT_EINTPEND_EINT0;
000204 e3a00001 MOV r0,#1
000208 e2811646 ADD r1,r1,#0x4600000
00020c e5810038 STR r0,[r1,#0x38]
;;;106 rEINTMASK=~BIT_EINTPEND_EINT0;
000210 e3e00001 MVN r0,#1
000214 e0011000 AND r1,r1,r0
000218 e5810034 STR r0,[r1,#0x34]
;;;107 rINTMSK=~BIT_EINT0_2;
00021c e3e00001 MVN r0,#1
000220 e2411646 SUB r1,r1,#0x4600000
000224 e5810008 STR r0,[r1,#8]
;;;108
;;;109 Uart_Printf("[SLOW MODE TEST]\n");
000228 e28f0f53 ADR r0,|L1.892|
00022c ebfffffe BL _printf
;;;110 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
;;;111 Uart_Printf(" 2. Entering SLOW mode.\n");
00023c e28f0f62 ADR r0,|L1.972|
000240 ebfffffe BL _printf
;;;112 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
;;;113 Uart_Printf(" 4. Press EINT0 key to exit SLOW mode\n");
000258 e28f0f74 ADR r0,|L1.1072|
00025c ebfffffe BL _printf
;;;114 Uart_TxEmpty(0); //To avoid being crushed the character
000260 e3a00000 MOV r0,#0
000264 ebfffffe BL Uart_TxEmpty
;;;115
;;;116 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|
;;;117 {
;;;118 Led_Display(0x0);
|L1.640|
000280 e3a00000 MOV r0,#0
000284 ebfffffe BL Led_Display
;;;119 Delay(1000);
000288 e3a00ffa MOV r0,#0x3e8
00028c ebfffffe BL Delay
;;;120 Led_Display(0xf);
000290 e3a0000f MOV r0,#0xf
000294 ebfffffe BL Led_Display
;;;121 Delay(1000);
000298 e3a00ffa MOV r0,#0x3e8
00029c ebfffffe BL Delay
;;;122 }
0002a0 eafffff4 B |L1.632|
;;;123
;;;124 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]
;;;125
;;;126 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]
;;;127 //The other memory control register should be optimized for SLOW mode.
;;;128
;;;129 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]
;;;130 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]
;;;131
;;;132 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|
;;;133 {
;;;134 Led_Display(0x0);
000300 e3a00000 MOV r0,#0
000304 ebfffffe BL Led_Display
;;;135 Delay(1000);
000308 e3a00ffa MOV r0,#0x3e8
00030c ebfffffe BL Delay
;;;136 Led_Display(0xf);
000310 e3a0000f MOV r0,#0xf
000314 ebfffffe BL Led_Display
;;;137 Delay(1000);
000318 e3a00ffa MOV r0,#0x3e8
00031c ebfffffe BL Delay
;;;138 }
000320 eafffff2 B |L1.752|
;;;139
;;;140 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]
;;;141 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
000340 eafffffb B |L1.820|
;;;142 rLCDCON1=saveLCD;
|L1.836|
000344 e3a0044a MOV r0,#0x4a000000
000348 e5805000 STR r5,[r0,#0]
;;;143 rSDRAM_REFRESH=saveREFRESH;
00034c e59f0018 LDR r0,|L1.876|
000350 e5806008 STR r6,[r0,#8]
;;;144 rCLKSRC=(0<<8)|(0<<7)|(0<<5)|(0<<4)|(0); // OnOSC_EN disable,U_PLL on,M_PLL on,MPLL_clk,Divider=0
000354 e3a00000 MOV r0,#0
000358 e3a01440 MOV r1,#0x40000000
00035c e5810024 STR r0,[r1,#0x24]
;;;145 }
000360 e8bd8070 LDMFD sp!,{r4-r6,pc}
|L1.868|
000364 40200000 DCD 0x40200000
|L1.872|
000368 00000000 DCD ||.bss$2||
|L1.876|
00036c 40c40000 DCD 0x40c40000
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -