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

📄 timer.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
📖 第 1 页 / 共 5 页
字号:
0002a0  e3a00451          MOV      r0,#0x51000000
0002a4  e5900000          LDR      r0,[r0,#0]
0002a8  e20004ff          AND      r0,r0,#0xff000000
0002ac  e3a01451          MOV      r1,#0x51000000
0002b0  e5810000          STR      r0,[r1,#0]
;;;138               	rTCFG1 = 0x0; //All Interrupt, MUX 4 ~ 0: 1/2            
0002b4  e3a00000          MOV      r0,#0
0002b8  e3a01451          MOV      r1,#0x51000000
0002bc  e5810004          STR      r0,[r1,#4]
;;;139                
;;;140                Uart_Printf("Prescaler1=0, Prescaler0=0, Dead Zone Disable, MUX 4 ~ 0: 1/2, Duty 50% \n");
0002c0  e59f0350          LDR      r0,|L1.1560|
0002c4  ebfffffe          BL       Uart_Printf
;;;141                break;
0002c8  ea00003b          B        |L1.956|
;;;142            
;;;143            case 'b':    
;;;144                
;;;145                rTCFG0 = rTCFG0 & ~(0xffffff) | (0xc8)<<16 | (0x7)<<8 | (0x7); //Dead zone=0, Prescaler1=7, Prescaler0=7
                  |L1.716|
0002cc  e3a00451          MOV      r0,#0x51000000
0002d0  e5900000          LDR      r0,[r0,#0]
0002d4  e20004ff          AND      r0,r0,#0xff000000
0002d8  e59f133c          LDR      r1,|L1.1564|
0002dc  e1800001          ORR      r0,r0,r1
0002e0  e3a01451          MOV      r1,#0x51000000
0002e4  e5810000          STR      r0,[r1,#0]
;;;146    			rTCFG1 = rTCFG1 & ~(0xffffff) | (0x3)<<16 | (0x3)<<12 | (0x3)<<8 | (0x3)<<4 | (0x3); //All Interrupt, MUX 4 ~ 0: 1/16
0002e8  e3a00451          MOV      r0,#0x51000000
0002ec  e5900004          LDR      r0,[r0,#4]
0002f0  e20004ff          AND      r0,r0,#0xff000000
0002f4  e59f1324          LDR      r1,|L1.1568|
0002f8  e1800001          ORR      r0,r0,r1
0002fc  e3a01451          MOV      r1,#0x51000000
000300  e5810004          STR      r0,[r1,#4]
;;;147                            
;;;148                Uart_Printf("Prescaler1=8, Prescaler0=8, Dead zone=200 Enable, MUX 4 ~ 0: 1/16, duty = 50%, Consider Dead zone effect\n");        		
000304  e59f0318          LDR      r0,|L1.1572|
000308  ebfffffe          BL       Uart_Printf
;;;149                break;
00030c  ea00002a          B        |L1.956|
;;;150                
;;;151            case 'c':    
;;;152                
;;;153                rTCFG0 = rTCFG0 & 0x0;	//Dead zone=0, Prescaler1=0, Prescaler0=0
                  |L1.784|
000310  e3a00451          MOV      r0,#0x51000000
000314  e5900000          LDR      r0,[r0,#0]
000318  e3a00000          MOV      r0,#0
00031c  e3a01451          MOV      r1,#0x51000000
000320  e5810000          STR      r0,[r1,#0]
;;;154    			rTCFG1 = rTCFG1 & 0x0;	//All Interrupt, MUX 4 ~ 0: 1/2
000324  e3a00451          MOV      r0,#0x51000000
000328  e5900004          LDR      r0,[r0,#4]
00032c  e3a00000          MOV      r0,#0
000330  e3a01451          MOV      r1,#0x51000000
000334  e5810004          STR      r0,[r1,#4]
;;;155                   		
;;;156                Uart_Printf("(H/L)Duty 0, TCNT =< TCMP, Inverter On\n");
000338  e28f0fba          ADR      r0,|L1.1576|
00033c  ebfffffe          BL       Uart_Printf
;;;157                break;
000340  ea00001d          B        |L1.956|
;;;158            
;;;159            case 'd':
;;;160               	
;;;161        		rTCFG0 = rTCFG0 & ~(0xffffff) | 0x00000; //Dead zone=0, Prescaler1=0, Prescaler0=0
                  |L1.836|
000344  e3a00451          MOV      r0,#0x51000000
000348  e5900000          LDR      r0,[r0,#0]
00034c  e20004ff          AND      r0,r0,#0xff000000
000350  e3a01451          MOV      r1,#0x51000000
000354  e5810000          STR      r0,[r1,#0]
;;;162               	rTCFG1 = rTCFG1 & ~(0xffffff) | 0x4 | 0x4 << 4 | 0x4 << 8 | 0x4 << 12 | 0x4 << 16;	//All Interrupt, MUX 4 ~ 0: 1/2            
000358  e3a00451          MOV      r0,#0x51000000
00035c  e5900004          LDR      r0,[r0,#4]
000360  e20004ff          AND      r0,r0,#0xff000000
000364  e59f12e4          LDR      r1,|L1.1616|
000368  e1800001          ORR      r0,r0,r1
00036c  e3a01451          MOV      r1,#0x51000000
000370  e5810004          STR      r0,[r1,#4]
;;;163                Uart_Printf("TCLK0, TCLK1 Input Divider Test(if TCLK0, TCLK1=25.4MHZ)\n");
000374  e28f0fb6          ADR      r0,|L1.1620|
000378  ebfffffe          BL       Uart_Printf
;;;164                break;
00037c  ea00000e          B        |L1.956|
;;;165             
;;;166            default:
;;;167                rGPBCON = save_B; 
                  |L1.896|
000380  e3a00456          MOV      r0,#0x56000000
000384  e5805010          STR      r5,[r0,#0x10]
;;;168                rGPGCON = save_G;       
000388  e3a00456          MOV      r0,#0x56000000
00038c  e5806060          STR      r6,[r0,#0x60]
;;;169                rGPHCON = save_H;           
000390  e3a00456          MOV      r0,#0x56000000
000394  e5807070          STR      r7,[r0,#0x70]
;;;170                rGPBUP  = save_PB;
000398  e3a00456          MOV      r0,#0x56000000
00039c  e5808018          STR      r8,[r0,#0x18]
;;;171                rGPGUP  = save_PG;
0003a0  e3a00456          MOV      r0,#0x56000000
0003a4  e5809068          STR      r9,[r0,#0x68]
;;;172                rGPHUP  = save_PH;
0003a8  e3a00456          MOV      r0,#0x56000000
0003ac  e580a078          STR      r10,[r0,#0x78]
;;;173                rMISCCR = save_MI;
0003b0  e3a00456          MOV      r0,#0x56000000
0003b4  e580b080          STR      r11,[r0,#0x80]
;;;174                return;
;;;175        }
;;;176        
;;;177        //(1/(PCLK/(Prescaler+1)/divider) * count(Max 65535) = Timer clock (Frequency)
;;;178        //(1/(50.8MHz/1/2))  *  2000 = 0.0787 msec ( 12.7 KHz)
;;;179        //(1/(50.8MHz/1/2))  *  4000 = 0.1575 msec ( 6.35 KHz)
;;;180        //(1/(50.8MHz/1/2))  *  5000 = 0.1969 msec ( 5.080 KHz)
;;;181        //(1/(50.8MHz/1/2))  *  10000 = 0.3937 msec ( 2.54 KHz)
;;;182        
;;;183        //(1/(50.8MHz/8/16)) *  2000 = 5.039 msec ( 198.45 Hz)
;;;184        //(1/(50.8MHz/8/16)) *  4000 = 10.079 msec ( 99.216 KHz)
;;;185        //(1/(50.8MHz/8/16)) *  5000 = 12.598 msec ( 79.38 Hz) 
;;;186        //(1/(50.8MHz/8/16)) *  10000 = 25.197 msec ( 39.687 Hz)
;;;187                              
;;;188        rTCNTB0 = 2000;      
;;;189        rTCNTB1 = 4000;       
;;;190        rTCNTB2 = 5000;       
;;;191        rTCNTB3 = 10000;      
;;;192                                                    
;;;193        rTCMPB0 =  2000 - 1000; //(H/L)duty 50%
;;;194        rTCMPB1 =  4000 - 2000;
;;;195        rTCMPB2 =  5000 - 2500;
;;;196        rTCMPB3 = 10000 - 5000;
;;;197    	
;;;198    	rTCON  = rTCON & ~(0xffffff) | 0x1<<1 | 0x1<<9 | 0x1<<13 | 0x1<<17 | 0x1<<21 ; //Manual update 
;;;199    	
;;;200    	switch(key)
;;;201    	{
;;;202    		case 'a':
;;;203    		
;;;204         	rTCON   = rTCON & ~(0xffffff) | 0x599909;  //Auto reload, Inverter off, No operation, Start, Dead zone Disable
;;;205    		
;;;206    		break;
;;;207    		
;;;208    		case 'b':
;;;209    	
;;;210         	rTCNTB0 = rTCNTB0 & ~(0xffff) | 500; //(1/(50.8MHz/8/16)) *  500 = 1.273 msec ( 793.8 Hz)
;;;211         	rTCMPB0 =  500 - 250; //(H/L)duty 50%
;;;212         	
;;;213         	rTCON = rTCON & ~(0xffffff) | 0x6aaa0a;  //Auto reload, Inverter off, Manual update, Stop, Dead zone Disable
;;;214        	rTCON = rTCON & ~(0xffffff) | 0x599909| (0x1) << 4;  //Auto reload, Inverter off, No operation, Start, Dead zone Enable
;;;215    		
;;;216        	break;
;;;217        	
;;;218        	case 'c':
;;;219    	
;;;220         	rTCNTB0 = rTCNTB0 & ~(0xffff) | 1000; 
;;;221         	rTCMPB0 =  1000;      
;;;222         	
;;;223         	rTCNTB1 = rTCNTB1 & ~(0xffff) | 1000; 
;;;224         	rTCMPB1 =  1000; 
;;;225         	
;;;226         	rTCNTB2 = rTCNTB2 & ~(0xffff) | 1000; 
;;;227         	rTCMPB2 =  1000; 
;;;228         	
;;;229         	rTCNTB3 = rTCNTB3 & ~(0xffff) | 1000; 
;;;230         	rTCMPB3 =  1000; 
;;;231         		
;;;232         	rTCON = rTCON & ~(0xffffff) | 0x1 << 1 | 0x1 << 9 | 0x1 << 13 | 0x1 << 17 | 0x1 << 21;  //Auto reload disable, Inverter off, Manual update, Stop, Dead zone Disable
;;;233    		rTCON = rTCON & ~(0xffffff) | 0x1 | 0x1 << 2 | 0x1 <<8 | 0x1 << 10| 0x1 << 12 | 0x1 << 14 | 0x1 << 16 | 0x1 << 18| 0x1 << 20;  //Auto reload enable, Inverter On, No Operation, Start, Dead zone Disable
;;;234    		
;;;235    		Uart_Printf("rTCNTB0 = Dec:%d, rTCNTO0 = Dec:%d, rTCMPB0 = Dec:%d\n",rTCNTB0, rTCNTO0, rTCMPB0);
;;;236        	break;
;;;237        
;;;238        	case 'd':
;;;239        
;;;240    		rTCON   = rTCON & ~(0xffffff) | 0x599909;  //Auto reload, Inverter off, No operation, Start, Dead zone Disable
;;;241    		break;
;;;242        
;;;243         	default:
;;;244            break;
;;;245        }
;;;246              
;;;247        if(key=='a' && (PCLK==(203200000/4)))  
;;;248        {
;;;249            
;;;250          	Uart_Printf("PCLK 50.8MHz, Timer TOUT0 : 0.0787 msec ( 12.70 KHz)\n");
;;;251          	Uart_Printf("PCLK 50.8MHz, Timer TOUT1 : 0.1575 msec (  6.35 KHz)\n");
;;;252            Uart_Printf("PCLK 50.8MHz, Timer TOUT2 : 0.1969 msec (  5.08 KHz)\n");
;;;253            Uart_Printf("PCLK 50.8MHz, Timer TOUT3 : 0.3937 msec (  2.54 KHz)\n");        
;;;254        }    
;;;255          
;;;256        else if(key=='b' && (PCLK==(203200000/4)))  
;;;257        {
;;;258            Uart_Printf("PCLK 50.8MHz, Timer TOUT0 :   1.273 msec (793.8 KHz)\n");
;;;259            Uart_Printf("PCLK 50.8MHz, Timer TOUT1 : /TOUT0 \n");
;;;260            Uart_Printf("PCLK 50.8MHz, Timer TOUT2 : 13.6094 msec ( 73.478 Hz)\n");
;;;261            Uart_Printf("PCLK 50.8MHz, Timer TOUT3 : 27.2189 msec ( 36.739 Hz)\n");                        
;;;262        }    
;;;263        
;;;264        else if(key=='d' && (PCLK==(203200000/4)))	 
;;;265        {
;;;266            Uart_Printf("then Timer TOUT 0 : 0.0787 msec ( 12.70 KHz)\n");
;;;267            Uart_Printf("then Timer TOUT 1 : 0.1575 msec (  6.35 KHz)\n");
;;;268            Uart_Printf("then Timer TOUT 2 : 0.1969 msec (  5.08 KHz)\n");
;;;269            Uart_Printf("then Timer TOUT 3 : 0.3937 msec (  2.54 KHz)\n");                        
;;;270        }
;;;271        
;;;272        Uart_Printf("\nProbe PCLK.\n");
;;;273        Uart_Printf("Probe TOUT0.\n");
;;;274        Uart_Printf("Probe TOUT1.\n");
;;;275        Uart_Printf("Probe TOUT2.\n");
;;;276        Uart_Printf("Probe TOUT3.\n");
;;;277        
;;;278        Uart_Printf("\nCheck PWM (Pulse Width Modulation) Output\n");
;;;279        Uart_Printf("Press any key.\n");
;;;280        Uart_Getch();   
;;;281        
;;;282        /* Stop Timer0, 1, 2, 3, 4 */
;;;283        rTCON   = 0x0;	//One-shot, Inverter off, No operation, Dead zone disable, Stop Timer 
;;;284    	
;;;285    	rGPBCON = save_B; 
;;;286        rGPGCON = save_G;       
;;;287        rGPHCON = save_H;    
;;;288        rGPBUP  = save_PB;
;;;289        rGPGUP  = save_PG;
;;;290        rGPHUP  = save_PH;
;;;291        rMISCCR = save_MI;
;;;292    
;;;293    }
                  |L1.952|
0003b8  e8bd8ff8          LDMFD    sp!,{r3-r11,pc}
                  |L1.956|
0003bc  e3a00e7d          MOV      r0,#0x7d0             ;188
0003c0  e3a01451          MOV      r1,#0x51000000        ;188
0003c4  e581000c          STR      r0,[r1,#0xc]          ;188
0003c8  e3a00efa          MOV      r0,#0xfa0             ;189
0003cc  e3a01451          MOV      r1,#0x51000000        ;189
0003d0  e5810018          STR      r0,[r1,#0x18]         ;189
0003d4  e2800ffa          ADD      r0,r0,#0x3e8          ;190
0003d8  e3a01451          MOV      r1,#0x51000000        ;190
0003dc  e5810024          STR      r0,[r1,#0x24]         ;190
0003e0  e1a00080          MOV      r0,r0,LSL #1          ;191
0003e4  e3a01451          MOV      r1,#0x51000000        ;191
0003e8  e5810030          STR      r0,[r1,#0x30]         ;191
0003ec  e3a00ffa          MOV      r0,#0x3e8             ;193
0003f0  e3a01451          MOV      r1,#0x51000000        ;193
0003f4  e5810010          STR      r0,[r1,#0x10]         ;193
0003f8  e3a00e7d          MOV      r0,#0x7d0             ;194
0003fc  e3a01451          MOV      r1,#0x51000000        ;194
000400  e581001c          STR      r0,[r1,#0x1c]         ;194
000404  e2800f7d          ADD      r0,r0,#0x1f4          ;195
000408  e3a01451          MOV      r1,#0x51000000        ;195
00040c  e5810028          STR      r0,[r1,#0x28]         ;195
000410  e1a00080          MOV      r0,r0,LSL #1          ;196
000414  e3a01451          MOV      r1,#0x51000000        ;196
000418  e5810034          STR      r0,[r1,#0x34]         ;196
00041c  e3a00451          MOV      r0,#0x51000000        ;198
000420  e5900008          LDR      r0,[r0,#8]            ;198
000424  e20004ff          AND      r0,r0,#0xff000000     ;198
000428  e59f1260          LDR      r1,|L1.1680|          ;198
00042c  e1800001          ORR      r0,r0,r1              ;198
000430  e3a01451          MOV      r1,#0x51000000        ;198
000434  e5810008          STR      r0,[r1,#8]            ;198
000438  e3540061          CMP      r4,#0x61              ;200
00043c  0a000006          BEQ      |L1.1116|             ;200
000440  e3540062          CMP      r4,#0x62              ;200
000444  0a00000c          BEQ      |L1.1148|             ;200
000448  e3540063          CMP      r4,#0x63              ;200
00044c  0a000023          BEQ      |L1.1248|             ;200
000450  e3540064          CMP      r4,#0x64              ;200

⌨️ 快捷键说明

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