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

📄 timer.txt

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

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

                          AREA ||.text||, CODE, READONLY

                  Timer_Test PROC
;;;58     void Timer_Test(void)
;;;59     {
                  |L1.0|
000000  e92d4010          STMFD    sp!,{r4,lr}
;;;60     	int i;
;;;61     	
;;;62     	while(1)
000004  e1a00000          NOP      
                  |L1.8|
000008  e1a00000          NOP      
;;;63     	{
;;;64     		Uart_Printf("\n\n============== Timer Function Test ==============\n");
00000c  e28f00ac          ADR      r0,|L1.192|
000010  ebfffffe          BL       Uart_Printf
;;;65     
;;;66     		i=0;
000014  e3a04000          MOV      r4,#0
;;;67     		Uart_Printf("\n");
000018  e28f00d8          ADR      r0,|L1.248|
00001c  ebfffffe          BL       Uart_Printf
;;;68     		while(1)
000020  e1a00000          NOP      
                  |L1.36|
000024  e1a00000          NOP      
;;;69     		{   //display menu
;;;70     			Uart_Printf("%2d:%s",i,func_timer_test[i][1]);
000028  e59f00cc          LDR      r0,|L1.252|
00002c  e0800184          ADD      r0,r0,r4,LSL #3
000030  e1a01004          MOV      r1,r4
000034  e5902004          LDR      r2,[r0,#4]
000038  e28f00c0          ADR      r0,|L1.256|
00003c  ebfffffe          BL       Uart_Printf
;;;71     			i++;
000040  e2844001          ADD      r4,r4,#1
;;;72     			if((int)(func_timer_test[i][0])==0)
000044  e59f00b0          LDR      r0,|L1.252|
000048  e7900184          LDR      r0,[r0,r4,LSL #3]
00004c  e3500000          CMP      r0,#0
000050  1a000002          BNE      |L1.96|
;;;73     			{
;;;74     				Uart_Printf("\n");
000054  e28f009c          ADR      r0,|L1.248|
000058  ebfffffe          BL       Uart_Printf
;;;75     				break;
00005c  ea000004          B        |L1.116|
;;;76     			}
;;;77     			if((i%2)==0)
                  |L1.96|
000060  e3140001          TST      r4,#1
000064  1a000001          BNE      |L1.112|
;;;78     			Uart_Printf("\n");
000068  e28f0088          ADR      r0,|L1.248|
00006c  ebfffffe          BL       Uart_Printf
;;;79     		}
                  |L1.112|
000070  eaffffeb          B        |L1.36|
;;;80     
;;;81     		Uart_Printf("\n=================================================\n");
                  |L1.116|
000074  e28f008c          ADR      r0,|L1.264|
000078  ebfffffe          BL       Uart_Printf
;;;82     	
;;;83     		Uart_Printf("\nPress Enter key to exit : ");
00007c  e28f00b8          ADR      r0,|L1.316|
000080  ebfffffe          BL       Uart_Printf
;;;84     		i = Uart_GetIntNum();
000084  ebfffffe          BL       Uart_GetIntNum
000088  e1a04000          MOV      r4,r0
;;;85     		if(i==-1) break;		// return.
00008c  e3740001          CMN      r4,#1
000090  1a000000          BNE      |L1.152|
000094  ea000008          B        |L1.188|
;;;86     		if(i>=0 && (i<((sizeof(func_timer_test)-1)/8)) )	// select and execute...
                  |L1.152|
000098  e3540000          CMP      r4,#0
00009c  ba000005          BLT      |L1.184|
0000a0  e3540004          CMP      r4,#4
0000a4  2a000003          BCS      |L1.184|
;;;87     			( (void (*)(void)) (func_timer_test[i][0]) )();
0000a8  e59f104c          LDR      r1,|L1.252|
0000ac  e7910184          LDR      r0,[r1,r4,LSL #3]
0000b0  e1a0e00f          MOV      lr,pc
0000b4  e1a0f000          MOV      pc,r0
;;;88     	}
                  |L1.184|
0000b8  eaffffd2          B        |L1.8|
;;;89     	
;;;90     }
                  |L1.188|
0000bc  e8bd8010          LDMFD    sp!,{r4,pc}
                  |L1.192|
0000c0  3d3d0a0a          DCB      "\n\n=="
0000c4  3d3d3d3d          DCB      "===="
0000c8  3d3d3d3d          DCB      "===="
0000cc  3d3d3d3d          DCB      "===="
0000d0  6d695420          DCB      " Tim"
0000d4  46207265          DCB      "er F"
0000d8  74636e75          DCB      "unct"
0000dc  206e6f69          DCB      "ion "
0000e0  74736554          DCB      "Test"
0000e4  3d3d3d20          DCB      " ==="
0000e8  3d3d3d3d          DCB      "===="
0000ec  3d3d3d3d          DCB      "===="
0000f0  0a3d3d3d          DCB      "===\n"
0000f4  00000000          DCB      "\0\0\0\0"
                  |L1.248|
0000f8  0000000a          DCB      "\n\0\0\0"
                  |L1.252|
0000fc  00000000          DCD      func_timer_test
                  |L1.256|
000100  3a643225          DCB      "%2d:"
000104  00007325          DCB      "%s\0\0"
                  |L1.264|
000108  3d3d3d0a          DCB      "\n==="
00010c  3d3d3d3d          DCB      "===="
000110  3d3d3d3d          DCB      "===="
000114  3d3d3d3d          DCB      "===="
000118  3d3d3d3d          DCB      "===="
00011c  3d3d3d3d          DCB      "===="
000120  3d3d3d3d          DCB      "===="
000124  3d3d3d3d          DCB      "===="
000128  3d3d3d3d          DCB      "===="
00012c  3d3d3d3d          DCB      "===="
000130  3d3d3d3d          DCB      "===="
000134  3d3d3d3d          DCB      "===="
000138  000a3d3d          DCB      "==\n\0"
                  |L1.316|
00013c  6572500a          DCB      "\nPre"
000140  45207373          DCB      "ss E"
000144  7265746e          DCB      "nter"
000148  79656b20          DCB      " key"
00014c  206f7420          DCB      " to "
000150  74697865          DCB      "exit"
000154  00203a20          DCB      " : \0"
                          ENDP

                  Test_TimerNormal PROC
;;;95     void Test_TimerNormal(void)
;;;96     {
000158  e92d4ff8          STMFD    sp!,{r3-r11,lr}
;;;97         int save_B,save_G,save_H,save_PB,save_PG,save_PH,save_MI;
;;;98         char key, toggle;
;;;99         
;;;100        /* Save Current Register related to PWM Port */
;;;101        //Save Current GPB, G, H Configure Registers 
;;;102        save_B  = rGPBCON;
00015c  e3a00456          MOV      r0,#0x56000000
000160  e5900010          LDR      r0,[r0,#0x10]
000164  e1a05000          MOV      r5,r0
;;;103        save_G  = rGPGCON;
000168  e3a00456          MOV      r0,#0x56000000
00016c  e5900060          LDR      r0,[r0,#0x60]
000170  e1a06000          MOV      r6,r0
;;;104        save_H  = rGPHCON;
000174  e3a00456          MOV      r0,#0x56000000
000178  e5900070          LDR      r0,[r0,#0x70]
00017c  e1a07000          MOV      r7,r0
;;;105        //Save Pull-Up Disable Register     
;;;106        save_PB = rGPBUP;
000180  e3a00456          MOV      r0,#0x56000000
000184  e5900018          LDR      r0,[r0,#0x18]
000188  e1a08000          MOV      r8,r0
;;;107        save_PG = rGPGUP;
00018c  e3a00456          MOV      r0,#0x56000000
000190  e5900068          LDR      r0,[r0,#0x68]
000194  e1a09000          MOV      r9,r0
;;;108        save_PH = rGPHUP;
000198  e3a00456          MOV      r0,#0x56000000
00019c  e5900078          LDR      r0,[r0,#0x78]
0001a0  e1a0a000          MOV      r10,r0
;;;109        //Save Miscellaneous Control Register 
;;;110        save_MI = rMISCCR;   
0001a4  e3a00456          MOV      r0,#0x56000000
0001a8  e5900080          LDR      r0,[r0,#0x80]
0001ac  e1a0b000          MOV      r11,r0
;;;111        
;;;112        /* Setting Port related to PWM */ 
;;;113        // PortB
;;;114        rGPBUP  = rGPBUP  & ~(0x1f)     | 0x1f; //GPB[4:0] Pull Up
0001b0  e3a00456          MOV      r0,#0x56000000
0001b4  e5900018          LDR      r0,[r0,#0x18]
0001b8  e380001f          ORR      r0,r0,#0x1f
0001bc  e3a01456          MOV      r1,#0x56000000
0001c0  e5810018          STR      r0,[r1,#0x18]
;;;115        rGPBCON = rGPBCON & ~(0x3ff)    | 0x2 | 0x2 << 2 | 0x2 << 4 | 0x2 << 6 | 0x2 << 8; //TCKL0, TOUT[3:0]   
0001c4  e3a00456          MOV      r0,#0x56000000
0001c8  e5900010          LDR      r0,[r0,#0x10]
0001cc  e1a00520          MOV      r0,r0,LSR #10
0001d0  e1a00500          MOV      r0,r0,LSL #10
0001d4  e3800f80          ORR      r0,r0,#0x200
0001d8  e38000aa          ORR      r0,r0,#0xaa
0001dc  e3a01456          MOV      r1,#0x56000000
0001e0  e5810010          STR      r0,[r1,#0x10]
;;;116        // PortG
;;;117        rGPGUP  = rGPGUP  & ~(0x800)    | 0x800; //GPG11 Pull Up
0001e4  e3a00456          MOV      r0,#0x56000000
0001e8  e5900068          LDR      r0,[r0,#0x68]
0001ec  e3800e80          ORR      r0,r0,#0x800
0001f0  e3a01456          MOV      r1,#0x56000000
0001f4  e5810068          STR      r0,[r1,#0x68]
;;;118        rGPGCON = rGPGCON & ~(0xc00000) | 0xc00000; //TCLK1 
0001f8  e3a00456          MOV      r0,#0x56000000
0001fc  e5900060          LDR      r0,[r0,#0x60]
000200  e38008c0          ORR      r0,r0,#0xc00000
000204  e3a01456          MOV      r1,#0x56000000
000208  e5810060          STR      r0,[r1,#0x60]
;;;119        // PortH
;;;120        rGPHUP  = rGPHUP  & ~(0x200)    | 0x200; //GPH9 Pull Up
00020c  e3a00456          MOV      r0,#0x56000000
000210  e5900078          LDR      r0,[r0,#0x78]
000214  e3800f80          ORR      r0,r0,#0x200
000218  e3a01456          MOV      r1,#0x56000000
00021c  e5810078          STR      r0,[r1,#0x78]
;;;121        rGPHCON = rGPHCON & ~(0x3<<18)  | (0x2<<18); //CLKOUT0    
000220  e3a00456          MOV      r0,#0x56000000
000224  e5900070          LDR      r0,[r0,#0x70]
000228  e3c00ac0          BIC      r0,r0,#0xc0000
00022c  e3800a80          ORR      r0,r0,#0x80000
000230  e3a01456          MOV      r1,#0x56000000
000234  e5810070          STR      r0,[r1,#0x70]
;;;122        // Miscellaneous Control Register
;;;123        rMISCCR = rMISCCR & ~(0xf0)     | 0x40; //Select PCLK with CLKOUT0
000238  e3a00456          MOV      r0,#0x56000000
00023c  e5900080          LDR      r0,[r0,#0x80]
000240  e3c000f0          BIC      r0,r0,#0xf0
000244  e3800040          ORR      r0,r0,#0x40
000248  e3a01456          MOV      r1,#0x56000000
00024c  e5810080          STR      r0,[r1,#0x80]
;;;124    
;;;125        Uart_Printf("[Select Timer Test Setting]\n");
000250  e28f0fe0          ADR      r0,|L1.1496|
000254  ebfffffe          BL       Uart_Printf
;;;126        Uart_Printf("a. Prescaler 1, 0: 0, Dead zone Disable, MUX 4~0: 1/2, (H/L)duty 50 \nb. Prescaler 1, 0: 8, Dead zone Enable, MUX 4~0: 1/16, (H/L)duty 50 \nc. (H/L)duty 0, TCNT =< TCMP, Inverter On\nd. TCLK0, TCLK1 Input Divider Test\n");
000258  e59f0398          LDR      r0,|L1.1528|
00025c  ebfffffe          BL       Uart_Printf
;;;127        Uart_Printf("Select [a ~ d]: \n");
000260  e28f0fe5          ADR      r0,|L1.1532|
000264  ebfffffe          BL       Uart_Printf
;;;128            
;;;129        key = Uart_Getch();
000268  ebfffffe          BL       Uart_Getch
00026c  e1a04000          MOV      r4,r0
;;;130        Uart_Printf("%c\n\n",key);    
000270  e1a01004          MOV      r1,r4
000274  e28f0fe5          ADR      r0,|L1.1552|
000278  ebfffffe          BL       Uart_Printf
;;;131    	
;;;132    	/* Timer Configuration Reg.0, 1(TCFG0, TCFG1) Setting */
;;;133    	switch(key)
00027c  e3540061          CMP      r4,#0x61
000280  0a000006          BEQ      |L1.672|
000284  e3540062          CMP      r4,#0x62
000288  0a00000f          BEQ      |L1.716|
00028c  e3540063          CMP      r4,#0x63
000290  0a00001e          BEQ      |L1.784|
000294  e3540064          CMP      r4,#0x64
000298  1a000038          BNE      |L1.896|
00029c  ea000028          B        |L1.836|
;;;134        {
;;;135            case 'a':
;;;136               	
;;;137        		rTCFG0 = rTCFG0 & ~(0xffffff) | 0x00000; //Dead zone=0, Prescaler1=0, Prescaler0=0
                  |L1.672|

⌨️ 快捷键说明

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