⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 power.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
📖 第 1 页 / 共 3 页
字号:
; generated by ARM C Compiler, ADS1.2 [Build 805]

; commandline [-errors .\err\power.err -O0 -asm -g+ -cpu ARM920T -fs "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
                          CODE32

                          AREA ||.text||, CODE, READONLY

                  Power_Test PROC
;;;59     void Power_Test(void)
;;;60     {
                  |L1.0|
000000  e92d4010          STMFD    sp!,{r4,lr}
;;;61     	int i;
;;;62     	
;;;63     	Uart_Printf("\nPower mode test.\n");
000004  e28f00d8          ADR      r0,|L1.228|
000008  ebfffffe          BL       Uart_Printf
;;;64     
;;;65     	// Battery fault setting.
;;;66     	rMISCCR = (rMISCCR & ~(0x7<<20)) | (1<<22) | (1<<21) | (0<<20);
00000c  e3a00456          MOV      r0,#0x56000000
000010  e5900080          LDR      r0,[r0,#0x80]
000014  e3c00870          BIC      r0,r0,#0x700000
000018  e3800860          ORR      r0,r0,#0x600000
00001c  e3a01456          MOV      r1,#0x56000000
000020  e5810080          STR      r0,[r1,#0x80]
;;;67     		
;;;68     	while(1)
000024  e1a00000          NOP      
                  |L1.40|
000028  e1a00000          NOP      
;;;69     	{
;;;70     		i=0;
00002c  e3a04000          MOV      r4,#0
;;;71     		Uart_Printf("\n\n");
000030  e28f00c0          ADR      r0,|L1.248|
000034  ebfffffe          BL       Uart_Printf
;;;72     		while(1)
000038  e1a00000          NOP      
                  |L1.60|
00003c  e1a00000          NOP      
;;;73     		{   //display menu
;;;74     			Uart_Printf("%2d:%s",i,func_power_test[i][1]);
000040  e59f00b4          LDR      r0,|L1.252|
000044  e0800184          ADD      r0,r0,r4,LSL #3
000048  e1a01004          MOV      r1,r4
00004c  e5902004          LDR      r2,[r0,#4]
000050  e28f00a8          ADR      r0,|L1.256|
000054  ebfffffe          BL       Uart_Printf
;;;75     			i++;
000058  e2844001          ADD      r4,r4,#1
;;;76     			if((int)(func_power_test[i][0])==0)
00005c  e59f0098          LDR      r0,|L1.252|
000060  e7900184          LDR      r0,[r0,r4,LSL #3]
000064  e3500000          CMP      r0,#0
000068  1a000002          BNE      |L1.120|
;;;77     			{
;;;78     				Uart_Printf("\n");
00006c  e28f0094          ADR      r0,|L1.264|
000070  ebfffffe          BL       Uart_Printf
;;;79     				break;
000074  ea000007          B        |L1.152|
;;;80     			}
;;;81     			if((i%3)==0)
                  |L1.120|
000078  e1a01004          MOV      r1,r4
00007c  e3a00003          MOV      r0,#3
000080  ebfffffe          BL       __rt_sdiv
000084  e3510000          CMP      r1,#0
000088  1a000001          BNE      |L1.148|
;;;82     			Uart_Printf("\n");
00008c  e28f0074          ADR      r0,|L1.264|
000090  ebfffffe          BL       Uart_Printf
;;;83     		}
                  |L1.148|
000094  eaffffe8          B        |L1.60|
;;;84     
;;;85     		Uart_Printf("\nSelect (\"-1\" to exit) : ");
                  |L1.152|
000098  e28f006c          ADR      r0,|L1.268|
00009c  ebfffffe          BL       Uart_Printf
;;;86     		i = Uart_GetIntNum();
0000a0  ebfffffe          BL       Uart_GetIntNum
0000a4  e1a04000          MOV      r4,r0
;;;87     		if(i==-1) break;		// return.
0000a8  e3740001          CMN      r4,#1
0000ac  1a000000          BNE      |L1.180|
0000b0  ea000008          B        |L1.216|
;;;88     		if(i>=0 && (i<((sizeof(func_power_test)-1)/8)) )	// select and execute...
                  |L1.180|
0000b4  e3540000          CMP      r4,#0
0000b8  ba000005          BLT      |L1.212|
0000bc  e3540010          CMP      r4,#0x10
0000c0  2a000003          BCS      |L1.212|
;;;89     			( (void (*)(void)) (func_power_test[i][0]) )();
0000c4  e59f1030          LDR      r1,|L1.252|
0000c8  e7910184          LDR      r0,[r1,r4,LSL #3]
0000cc  e1a0e00f          MOV      lr,pc
0000d0  e1a0f000          MOV      pc,r0
;;;90     	}
                  |L1.212|
0000d4  eaffffd3          B        |L1.40|
;;;91     	
;;;92     	Uart_Printf("\nPower_Test program end.\n");
                  |L1.216|
0000d8  e28f0048          ADR      r0,|L1.296|
0000dc  ebfffffe          BL       Uart_Printf
;;;93     }
0000e0  e8bd8010          LDMFD    sp!,{r4,pc}
                  |L1.228|
0000e4  776f500a          DCB      "\nPow"
0000e8  6d207265          DCB      "er m"
0000ec  2065646f          DCB      "ode "
0000f0  74736574          DCB      "test"
0000f4  00000a2e          DCB      ".\n\0\0"
                  |L1.248|
0000f8  00000a0a          DCB      "\n\n\0\0"
                  |L1.252|
0000fc  00000000          DCD      func_power_test
                  |L1.256|
000100  3a643225          DCB      "%2d:"
000104  00007325          DCB      "%s\0\0"
                  |L1.264|
000108  0000000a          DCB      "\n\0\0\0"
                  |L1.268|
00010c  6c65530a          DCB      "\nSel"
000110  20746365          DCB      "ect "
000114  312d2228          DCB      "(\"-1"
000118  6f742022          DCB      "\" to"
00011c  69786520          DCB      " exi"
000120  3a202974          DCB      "t) :"
000124  00000020          DCB      " \0\0\0"
                  |L1.296|
000128  776f500a          DCB      "\nPow"
00012c  545f7265          DCB      "er_T"
000130  20747365          DCB      "est "
000134  676f7270          DCB      "prog"
000138  206d6172          DCB      "ram "
00013c  2e646e65          DCB      "end."
000140  0000000a          DCB      "\n\0\0\0"
                          ENDP

                  SlowEint0Int PROC
;;;158    void __irq SlowEint0Int(void)
;;;159    {
000144  e92d0003          STMFD    sp!,{r0,r1}
;;;160    	ClearPending(BIT_EINT0);
000148  e3a00001          MOV      r0,#1
00014c  e3a0144a          MOV      r1,#0x4a000000
000150  e5810000          STR      r0,[r1,#0]
000154  e3a00001          MOV      r0,#1
000158  e3a0144a          MOV      r1,#0x4a000000
00015c  e5810010          STR      r0,[r1,#0x10]
000160  e3a0044a          MOV      r0,#0x4a000000
000164  e5900010          LDR      r0,[r0,#0x10]
;;;161    	slowExit=1;
000168  e3a00001          MOV      r0,#1
00016c  e59f1184          LDR      r1,|L1.760|
000170  e5810000          STR      r0,[r1,#0]  ; slowExit
;;;162    }
000174  e8bd0003          LDMFD    sp!,{r0,r1}
000178  e25ef004          SUBS     pc,lr,#4
                          ENDP

                  Test_SlowMode PROC
;;;98     void Test_SlowMode(void)
;;;99     {
00017c  e92d4038          STMFD    sp!,{r3-r5,lr}
;;;100    	int i;
;;;101    	unsigned int saveREFRESH;
;;;102    
;;;103    	slowExit=0;
000180  e3a00000          MOV      r0,#0
000184  e59f116c          LDR      r1,|L1.760|
000188  e5810000          STR      r0,[r1,#0]  ; slowExit
;;;104    
;;;105    	// GPIO and Interrupt setting
;;;106    	rGPFCON=(rGPFCON & ~(0x3<<0)) | (0x2<<0); //PF0=EINT0
00018c  e3a00456          MOV      r0,#0x56000000
000190  e5900050          LDR      r0,[r0,#0x50]
000194  e3c00003          BIC      r0,r0,#3
000198  e3800002          ORR      r0,r0,#2
00019c  e3a01456          MOV      r1,#0x56000000
0001a0  e5810050          STR      r0,[r1,#0x50]
;;;107    	rEXTINT0=(rEXTINT0&~(0x7<<0)) | (0x2<<0); //EINT0=falling edge triggered
0001a4  e3a00456          MOV      r0,#0x56000000
0001a8  e5900088          LDR      r0,[r0,#0x88]
0001ac  e3c00007          BIC      r0,r0,#7
0001b0  e3800002          ORR      r0,r0,#2
0001b4  e3a01456          MOV      r1,#0x56000000
0001b8  e5810088          STR      r0,[r1,#0x88]
;;;108    
;;;109    	pISR_EINT0=(U32)SlowEint0Int;
0001bc  e59f0138          LDR      r0,|L1.764|
0001c0  e59f1138          LDR      r1,|L1.768|
0001c4  e5810f20          STR      r0,[r1,#0xf20]
;;;110    	rINTMSK=~BIT_EINT0;		// Unmask eint0
0001c8  e3e00001          MVN      r0,#1
0001cc  e3a0144a          MOV      r1,#0x4a000000
0001d0  e5810008          STR      r0,[r1,#8]
;;;111    
;;;112    	Uart_Printf("[SLOW MODE TEST]\n");
0001d4  e28f0f4a          ADR      r0,|L1.772|
0001d8  ebfffffe          BL       Uart_Printf
;;;113    	Uart_Printf("  Press EINT0 key to exit SLOW mode\n");
0001dc  e28f0f4d          ADR      r0,|L1.792|
0001e0  ebfffffe          BL       Uart_Printf
;;;114    	Uart_Printf("  Check the CLKOUT0 pad clock is the same as X-tal input in Slow mode.\n");
0001e4  e59f0154          LDR      r0,|L1.832|
0001e8  ebfffffe          BL       Uart_Printf
;;;115    	Uart_Printf("  Compare the LED Blink speed at each mode.\n");
0001ec  e28f0f54          ADR      r0,|L1.836|
0001f0  ebfffffe          BL       Uart_Printf
;;;116    	Uart_Printf("\n  Press any key to enter slow mode.\n");	
0001f4  e28f0f5e          ADR      r0,|L1.884|
0001f8  ebfffffe          BL       Uart_Printf
;;;117    	Uart_TxEmpty(1);	//To avoid being crushed the character
0001fc  e3a00001          MOV      r0,#1
000200  ebfffffe          BL       Uart_TxEmpty
;;;118    
;;;119    	Clk0_Enable(2);	// 0:MPLLin, 1:UPLL, 2:FCLK, 3:HCLK, 4:PCLK, 5:DCLK0
000204  e3a00002          MOV      r0,#2
000208  ebfffffe          BL       Clk0_Enable
;;;120    
;;;121    	while(!slowExit) {
00020c  e1a00000          NOP      
                  |L1.528|
000210  e59f00e0          LDR      r0,|L1.760|
000214  e5900000          LDR      r0,[r0,#0]  ; slowExit
000218  e3500000          CMP      r0,#0
00021c  1a000012          BNE      |L1.620|
;;;122    		Led_Display(0xa);
000220  e3a0000a          MOV      r0,#0xa
000224  ebfffffe          BL       Led_Display
;;;123    		//DoQsort(); 
;;;124    		for(i=0; i<100; i++);
000228  e3a04000          MOV      r4,#0
                  |L1.556|
00022c  e3540064          CMP      r4,#0x64
000230  aa000001          BGE      |L1.572|
000234  e2844001          ADD      r4,r4,#1
000238  eafffffb          B        |L1.556|
;;;125    		
;;;126    		Led_Display(0x5);
                  |L1.572|
00023c  e3a00005          MOV      r0,#5
000240  ebfffffe          BL       Led_Display
;;;127    		//DoQsort();
;;;128    		for(i=0; i<100; i++);
000244  e3a04000          MOV      r4,#0
                  |L1.584|
000248  e3540064          CMP      r4,#0x64
00024c  aa000001          BGE      |L1.600|
000250  e2844001          ADD      r4,r4,#1
000254  eafffffb          B        |L1.584|
;;;129    
;;;130    		if(Uart_GetKey()!=0) break;
                  |L1.600|
000258  ebfffffe          BL       Uart_GetKey
00025c  e3500000          CMP      r0,#0
000260  0a000000          BEQ      |L1.616|
000264  ea000000          B        |L1.620|
;;;131    	}
                  |L1.616|
000268  eaffffe8          B        |L1.528|
;;;132    	
;;;133    	rCLKSLOW=(1<<7)|(1<<5)|(1<<4)|(0<<0); //FCLK=FIN/1,SLOW mode,MPLL=off,UPLL=off 
                  |L1.620|
00026c  e3a000b0          MOV      r0,#0xb0
000270  e3a0144c          MOV      r1,#0x4c000000
000274  e5810010          STR      r0,[r1,#0x10]
;;;134    
;;;135    	// Re-setting the refresh count for 12MHz HCLK.
;;;136    	saveREFRESH=rREFRESH;
000278  e3a00448          MOV      r0,#0x48000000
00027c  e5905024          LDR      r5,[r0,#0x24]
;;;137    	rREFRESH=(1<<23)|(U32)(2048+1-12*7.8); //Trp=2clk,Trc=4clk
000280  e59f0114          LDR      r0,|L1.924|
000284  e3a01448          MOV      r1,#0x48000000
000288  e5810024          STR      r0,[r1,#0x24]
;;;138    
;;;139    
;;;140    	while(!slowExit) {
00028c  e1a00000          NOP      
                  |L1.656|
000290  e59f0060          LDR      r0,|L1.760|
000294  e5900000          LDR      r0,[r0,#0]  ; slowExit
000298  e3500000          CMP      r0,#0
00029c  1a000006          BNE      |L1.700|
;;;141    		Led_Display(0xa);
0002a0  e3a0000a          MOV      r0,#0xa
0002a4  ebfffffe          BL       Led_Display
;;;142    		DoQsort(); 
0002a8  ebfffffe          BL       DoQsort
;;;143    		//for(i=0; i<100; i++);
;;;144    		
;;;145    		Led_Display(0x5);
0002ac  e3a00005          MOV      r0,#5
0002b0  ebfffffe          BL       Led_Display
;;;146    		DoQsort();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -