📄 timer.txt
字号:
; generated by ARM C Compiler, ADS1.2 [Build 842]
; commandline [-errors .\err\timer.err -O0 -asm -g+ -cpu 5TEJ -fs -Wd -Ec -I.\include "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
CODE32
AREA ||.text||, CODE, READONLY
TimerSubMessage PROC
;;;72 void TimerSubMessage(void)
;;;73 {
|L1.0|
000000 e92d4010 STMFD sp!,{r4,lr}
;;;74 int i;
;;;75
;;;76
;;;77 i=0;
000004 e3a04000 MOV r4,#0
;;;78 Uart_Printf("\n\n");
000008 e28f0058 ADR r0,|L1.104|
00000c ebfffffe BL _printf
;;;79 while(1)
000010 e1a00000 NOP
|L1.20|
000014 e1a00000 NOP
;;;80 { //display menu
;;;81 Uart_Printf("%2d:%s",i,timer_func[i][1]);
000018 e59f004c LDR r0,|L1.108|
00001c e0800184 ADD r0,r0,r4,LSL #3
000020 e1a01004 MOV r1,r4
000024 e5902004 LDR r2,[r0,#4]
000028 e28f0040 ADR r0,|L1.112|
00002c ebfffffe BL _printf
;;;82 i++;
000030 e2844001 ADD r4,r4,#1
;;;83 if((int)(timer_func[i][0])==0)
000034 e59f0030 LDR r0,|L1.108|
000038 e7900184 LDR r0,[r0,r4,LSL #3]
00003c e3500000 CMP r0,#0
000040 1a000002 BNE |L1.80|
;;;84 {
;;;85 Uart_Printf("\n");
000044 e28f002c ADR r0,|L1.120|
000048 ebfffffe BL _printf
;;;86 break;
00004c ea000004 B |L1.100|
;;;87 }
;;;88 if((i%4)==0) Uart_Printf("\n");
|L1.80|
000050 e3140003 TST r4,#3
000054 1a000001 BNE |L1.96|
000058 e28f0018 ADR r0,|L1.120|
00005c ebfffffe BL _printf
;;;89 }
|L1.96|
000060 eaffffeb B |L1.20|
;;;90 }
|L1.100|
000064 e8bd8010 LDMFD sp!,{r4,pc}
|L1.104|
000068 00000a0a DCB "\n\n\0\0"
|L1.108|
00006c 00000000 DCD timer_func
|L1.112|
000070 3a643225 DCB "%2d:"
000074 00007325 DCB "%s\0\0"
|L1.120|
000078 0000000a DCB "\n\0\0\0"
ENDP
Ch7_PwmTimer_test PROC
;;;52 void Ch7_PwmTimer_test(void)
;;;53 {
00007c e92d4010 STMFD sp!,{r4,lr}
;;;54 int i;
;;;55
;;;56 Uart_Printf("Menu of Timer function\n");
000080 e28f004c ADR r0,|L1.212|
000084 ebfffffe BL _printf
;;;57 // Wait until memory stick is inserted.
;;;58
;;;59 while(1) {
000088 e1a00000 NOP
|L1.140|
00008c e1a00000 NOP
;;;60 TimerSubMessage();
000090 ebfffffe BL TimerSubMessage
;;;61 Uart_Printf("\nSelect(-1 to exit): ");
000094 e28f0050 ADR r0,|L1.236|
000098 ebfffffe BL _printf
;;;62 i = Uart_GetIntNum();
00009c ebfffffe BL Uart_GetIntNum
0000a0 e1a04000 MOV r4,r0
;;;63 //Uart_Printf("IN:%d.\n\n", i);
;;;64 if(i==-1) break;
0000a4 e3740001 CMN r4,#1
0000a8 1a000000 BNE |L1.176|
0000ac ea000007 B |L1.208|
;;;65
;;;66 if(i>=0 && (i<(sizeof(timer_func)/3)) )
|L1.176|
0000b0 e3540000 CMP r4,#0
0000b4 ba000004 BLT |L1.204|
0000b8 e354000a CMP r4,#0xa
0000bc 2a000002 BCS |L1.204|
;;;67 ( (void (*)(void)) (timer_func[i][0]) )(); // execute selected function.
0000c0 e51f105c LDR r1,|L1.108|
0000c4 e7910184 LDR r0,[r1,r4,LSL #3]
0000c8 e12fff30 BLX r0
;;;68 }
|L1.204|
0000cc eaffffee B |L1.140|
;;;69
;;;70 }
|L1.208|
0000d0 e8bd8010 LDMFD sp!,{r4,pc}
|L1.212|
0000d4 756e654d DCB "Menu"
0000d8 20666f20 DCB " of "
0000dc 656d6954 DCB "Time"
0000e0 75662072 DCB "r fu"
0000e4 6974636e DCB "ncti"
0000e8 000a6e6f DCB "on\n\0"
|L1.236|
0000ec 6c65530a DCB "\nSel"
0000f0 28746365 DCB "ect("
0000f4 7420312d DCB "-1 t"
0000f8 7865206f DCB "o ex"
0000fc 3a297469 DCB "it):"
000100 00000020 DCB " \0\0\0"
ENDP
Test_Timer PROC
;;;107 void Test_Timer(void)
;;;108 {
000104 e92d4ff8 STMFD sp!,{r3-r11,lr}
;;;109 int save_GPCON_U, save_GPCON_L,save_GPDAT, save_rGPUP;
;;;110 int Deadzone_test_flag= 0, PWM50_test_flag=0, Inverton_test_flag=0;
000108 e3a04000 MOV r4,#0
00010c e3a06000 MOV r6,#0
000110 e3a05000 MOV r5,#0
;;;111 char key;
;;;112
;;;113
;;;114 Uart_Printf("[ PWM_TOUT 0,1,2,3 Test ]\n\n");
000114 e28f0f54 ADR r0,|L1.620|
000118 ebfffffe BL _printf
;;;115 //Uart_Printf("= Current Port Setting List =\n");
;;;116 //Uart_Printf("rGPCON_U = 0x%8x, rGPDAT = 0x%8x, rGPUP= 0x%8x \n" ,rGPCON_U,rGPDAT,rGPUP);
;;;117
;;;118 save_GPCON_L= rGPCON_L;
00011c e59f0164 LDR r0,|L1.648|
000120 e5900008 LDR r0,[r0,#8]
000124 e1a09000 MOV r9,r0
;;;119 save_GPCON_U= rGPCON_U;
000128 e59f0158 LDR r0,|L1.648|
00012c e5900000 LDR r0,[r0,#0]
000130 e1a08000 MOV r8,r0
;;;120 save_GPDAT= rGPDAT;
000134 e59f014c LDR r0,|L1.648|
000138 e590000c LDR r0,[r0,#0xc]
00013c e1a0a000 MOV r10,r0
;;;121 save_rGPUP= rGPPU;
000140 e59f0140 LDR r0,|L1.648|
000144 e5900010 LDR r0,[r0,#0x10]
000148 e1a0b000 MOV r11,r0
;;;122
;;;123 // controls PCLK into PWMTIMER block 0 :disable, 1:enable
;;;124 rCLKCON = rCLKCON & ~(0x100) | 0x100;
00014c e3a00440 MOV r0,#0x40000000
000150 e5900020 LDR r0,[r0,#0x20]
000154 e3800f40 ORR r0,r0,#0x100
000158 e3a01440 MOV r1,#0x40000000
00015c e5810020 STR r0,[r1,#0x20]
;;;125 // IO port pull up control register : 0=enable, 1=disable
;;;126 //rGPPU= rGPPU & ~(0x00f80000) | 0x00f80000;
;;;127
;;;128 // IO port configuration register relative to TIMER
;;;129 #if GPCONU_ABAIL
;;;130 rGPCON_U = 0x2aa;
000160 e59f0124 LDR r0,|L1.652|
000164 e2811648 ADD r1,r1,#0x4800000
000168 e5810000 STR r0,[r1,#0]
;;;131 #else
;;;132 rGPCON_L = 0xffc;
;;;133 #endif
;;;134
;;;135 rGPPU = 0x0;
00016c e3a00000 MOV r0,#0
000170 e1c11000 BIC r1,r1,r0
000174 e5810010 STR r0,[r1,#0x10]
;;;136 // check the buffer writing, correctly
;;;137 //Uart_Printf("= Changed Port Setting List =\n");
;;;138 //Uart_Printf("rGPCON_U = 0x%8x, rGPDAT = 0x%8x, rGPUP= 0x%8x \n" ,rGPCON_L,rGPDAT,rGPPU);
;;;139
;;;140
;;;141 LABEL:
000178 e1a00000 NOP
;;;142
;;;143 Uart_Printf("[ Select Timer Clock ]\n");
|L1.380|
00017c e28f0f43 ADR r0,|L1.656|
000180 ebfffffe BL _printf
;;;144 Uart_Printf("[ prescaler0 | prescaler1 | divider\n");
000184 e28f0f47 ADR r0,|L1.680|
000188 ebfffffe BL _printf
;;;145 Uart_Printf("a. 0 0 1/2 \n");
00018c e28f0f4f ADR r0,|L1.720|
000190 ebfffffe BL _printf
;;;146 Uart_Printf("b. 0 0 1/4 \n");
000194 e28f0f59 ADR r0,|L1.768|
000198 ebfffffe BL _printf
;;;147 Uart_Printf("c. 0 0 1/8 \n");
00019c e28f0f63 ADR r0,|L1.816|
0001a0 ebfffffe BL _printf
;;;148 Uart_Printf("d. 0 0 1/16 \n");
0001a4 e28f0f6d ADR r0,|L1.864|
0001a8 ebfffffe BL _printf
;;;149 // Uart_Printf("e. 0 0 TCLK0 \n"); // not implemented in GPIO
;;;150 Uart_Printf("f. 255 255 1/2 \n");
0001ac e28f0f77 ADR r0,|L1.912|
0001b0 ebfffffe BL _printf
;;;151 Uart_Printf("g. 255 255 1/4 \n");
0001b4 e28f0f80 ADR r0,|L1.956|
0001b8 ebfffffe BL _printf
;;;152 Uart_Printf("h. 255 255 1/8 \n");
0001bc e28f0f89 ADR r0,|L1.1000|
0001c0 ebfffffe BL _printf
;;;153 Uart_Printf("i. 255 255 1/16 \n");
0001c4 e28f0f92 ADR r0,|L1.1044|
0001c8 ebfffffe BL _printf
;;;154 // Uart_Printf("j. 255 255 TCLK1 \n"); // // not implemented in GPIO
;;;155 Uart_Printf("k. 0 0 1/2 (Dead-zone value=40 \n");
0001cc e59f0270 LDR r0,|L1.1092|
0001d0 ebfffffe BL _printf
;;;156 Uart_Printf("l. 0 0 1/2 (PWM 50% \n");
0001d4 e28f0f9b ADR r0,|L1.1096|
0001d8 ebfffffe BL _printf
;;;157 Uart_Printf("m. 0 0 1/2 (Invert on.off \n");
0001dc e28f0fa7 ADR r0,|L1.1152|
0001e0 ebfffffe BL _printf
;;;158
;;;159 Uart_Printf("\nSelect the function to test : ");
0001e4 e28f0fb4 ADR r0,|L1.1212|
0001e8 ebfffffe BL _printf
;;;160 key = Uart_Getch();
0001ec ebfffffe BL Uart_Getch
0001f0 e1a07000 MOV r7,r0
;;;161 Uart_Printf("%c\n\n",key);
0001f4 e1a01007 MOV r1,r7
0001f8 e28f0fb7 ADR r0,|L1.1244|
0001fc ebfffffe BL _printf
;;;162
;;;163 switch(key)
000200 e2470061 SUB r0,r7,#0x61
000204 e350000c CMP r0,#0xc
000208 908ff100 ADDLS pc,pc,r0,LSL #2
00020c ea00011f B |L1.1680|
000210 ea00000b B |L1.580|
000214 ea0000b2 B |L1.1252|
000218 ea0000bb B |L1.1292|
00021c ea0000c4 B |L1.1332|
000220 ea00011a B |L1.1680|
000224 ea0000cc B |L1.1372|
000228 ea0000d6 B |L1.1416|
00022c ea0000e0 B |L1.1460|
000230 ea0000ea B |L1.1504|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -