📄 systime.lst
字号:
1 .file "sysTime.c"
9 .Ltext0:
10 .align 2
11 .global initSysTime
13 initSysTime:
14 .LFB2:
15 .file 1 "sysTime.c"
1:sysTime.c **** /******************************************************************************
2:sysTime.c **** *
3:sysTime.c **** * $RCSfile: $
4:sysTime.c **** * $Revision: $
5:sysTime.c **** *
6:sysTime.c **** * This module provides the interface routines for initializing and
7:sysTime.c **** * accessing the system timing functions.
8:sysTime.c **** * Copyright 2004, R O SoftWare
9:sysTime.c **** * No guarantees, warrantees, or promises, implied or otherwise.
10:sysTime.c **** * May be used for hobby or commercial purposes provided copyright
11:sysTime.c **** * notice remains intact.
12:sysTime.c **** *
13:sysTime.c **** *****************************************************************************/
14:sysTime.c **** #include "types.h"
15:sysTime.c **** #include "LPC21xx.h"
16:sysTime.c **** #include "config.h"
17:sysTime.c **** #include "sysTime.h"
18:sysTime.c ****
19:sysTime.c **** static uint32_t sysTICs;
20:sysTime.c **** static uint32_t lastT0TC;
21:sysTime.c ****
22:sysTime.c **** /******************************************************************************
23:sysTime.c **** *
24:sysTime.c **** * Function Name: initSysTime()
25:sysTime.c **** *
26:sysTime.c **** * Description:
27:sysTime.c **** * This function initializes the LPC's Timer 0 for use as the system timer.
28:sysTime.c **** *
29:sysTime.c **** * Calling Sequence:
30:sysTime.c **** * void
31:sysTime.c **** *
32:sysTime.c **** * Returns:
33:sysTime.c **** * void
34:sysTime.c **** *
35:sysTime.c **** *****************************************************************************/
36:sysTime.c **** void initSysTime(void)
37:sysTime.c **** {
16 args = 0, pretend = 0, frame = 0
17 @ frame_needed = 0, uses_anonymous_args = 0
18 @ link register save eliminated.
19 .LVL0:
20 .loc 1 45 0
38:sysTime.c **** // setup Timer 1 to count forever
39:sysTime.c **** T0TCR = TCR_RESET; // reset & disable timer 0
40:sysTime.c **** T0PR = T0_PCLK_DIV - 1; // set the prescale divider
41:sysTime.c **** T0MCR = 0; // disable match registers
42:sysTime.c **** T0CCR = 0; // disable compare registers
43:sysTime.c **** T0EMR = 0; // disable external match register
44:sysTime.c **** T0TCR = TCR_ENABLE; // enable timer 0
45:sysTime.c **** sysTICs = 0;
21 r3, .L3
22 0000 2C309FE5 .loc 1 39 0
23 ldr r2, .L3+4
24 0004 2C209FE5 .loc 1 41 0
25 mov r1, #0
26 0008 0010A0E3 .loc 1 45 0
27 str r1, [r3, #0]
28 000c 001083E5 .loc 1 39 0
29 mov r0, #2
30 0010 0200A0E3 .loc 1 44 0
31 mov r3, #1
32 0014 0130A0E3 .loc 1 39 0
33 str r0, [r2, #4]
34 0018 040082E5 .loc 1 37 0
35 @ lr needed for prologue
36 .loc 1 40 0
37 str r0, [r2, #12]
38 001c 0C0082E5 .loc 1 41 0
39 str r1, [r2, #20]
40 0020 141082E5 .loc 1 42 0
41 str r1, [r2, #40]
42 0024 281082E5 .loc 1 43 0
43 str r1, [r2, #60]
44 0028 3C1082E5 .loc 1 44 0
45 str r3, [r2, #4]
46 002c 043082E5 .loc 1 46 0
46:sysTime.c **** }
47
48 0030 1EFF2FE1 .word sysTICs
49 .word -536854528
50 .LFE2:
52 0034 04000000 .align 2
53 0038 004000E0 .global getSysTICs
55 getSysTICs:
56 .LFB3:
57 .loc 1 63 0
58 @ args = 0, pretend = 0, frame = 0
59 @ frame_needed = 0, uses_anonymous_args = 0
60 @ link register save eliminated.
47:sysTime.c ****
48:sysTime.c **** /******************************************************************************
49:sysTime.c **** *
50:sysTime.c **** * Function Name: getSysTICs()
51:sysTime.c **** *
52:sysTime.c **** * Description:
53:sysTime.c **** * This function returns the current syetem time in TICs.
54:sysTime.c **** *
55:sysTime.c **** * Calling Sequence:
56:sysTime.c **** * void
57:sysTime.c **** *
58:sysTime.c **** * Returns:
59:sysTime.c **** * The current time in TICs as represented by sysTICs
60:sysTime.c **** *
61:sysTime.c **** *****************************************************************************/
62:sysTime.c **** uint32_t getSysTICs(void)
63:sysTime.c **** {
61 1 66 0
62 ldr r1, .L7
63 .loc 1 64 0
64 ldr r3, .L7+4
65 .loc 1 66 0
64:sysTime.c **** uint32_t now = T0TC;
65:sysTime.c ****
66:sysTime.c **** sysTICs += (uint32_t)(now - lastT0TC);
66 ip, .L7+8
67 003c 24109FE5 .loc 1 64 0
68 ldr r2, [r3, #8]
69 0040 24309FE5 .LVL2:
70 .loc 1 66 0
71 0044 24C09FE5 ldr r3, [r1, #0]
72 ldr r0, [ip, #0]
73 0048 082093E5 rsb r3, r3, r2
74 add r0, r0, r3
75 .loc 1 63 0
76 004c 003091E5 @ lr needed for prologue
77 0050 00009CE5 .loc 1 67 0
78 0054 023063E0 str r2, [r1, #0]
79 0058 030080E0 .loc 1 66 0
80 str r0, [ip, #0]
81 .loc 1 69 0
67:sysTime.c **** lastT0TC = now;
82 ign 2
83 005c 002081E5 .L7:
84 .word lastT0TC
85 0060 00008CE5 .word -536854528
68:sysTime.c **** return sysTICs;
69:sysTime.c **** }
86 rd sysTICs
87 0064 1EFF2FE1 .LFE3:
89 .align 2
90 .global getElapsedSysTICs
92 006c 004000E0 getElapsedSysTICs:
93 0070 04000000 .LFB4:
94 .loc 1 88 0
95 @ args = 0, pretend = 0, frame = 0
96 @ frame_needed = 0, uses_anonymous_args = 0
97 .LVL3:
98 str lr, [sp, #-4]!
99 .LCFI0:
100 .LBB2:
70:sysTime.c ****
71:sysTime.c ****
72:sysTime.c **** /******************************************************************************
73:sysTime.c **** *
74:sysTime.c **** * Function Name: getElapsedSysTICs()
75:sysTime.c **** *
76:sysTime.c **** * Description:
77:sysTime.c **** * This function then returns the difference in TICs between the
78:sysTime.c **** * given starting time and the current system time.
79:sysTime.c **** *
80:sysTime.c **** * Calling Sequence:
81:sysTime.c **** * The starting time.
82:sysTime.c **** *
83:sysTime.c **** * Returns:
84:sysTime.c **** * The time difference.
85:sysTime.c **** *
86:sysTime.c **** *****************************************************************************/
87:sysTime.c **** uint32_t getElapsedSysTICs(uint32_t startTime)
88:sysTime.c **** {
101 66 0
102 ldr ip, .L11
103 .loc 1 64 0
104 ldr r3, .L11+4
105 0074 04E02DE5 .loc 1 66 0
106 ldr lr, .L11+8
107 .loc 1 64 0
108 ldr r1, [r3, #8]
109 .LVL4:
110 0078 28C09FE5 .loc 1 66 0
111 ldr r3, [ip, #0]
112 007c 28309FE5 ldr r2, [lr, #0]
113 rsb r3, r3, r1
114 0080 28E09FE5 add r2, r2, r3
115 .LBE3:
116 0084 081093E5 .LBE2:
117 .loc 1 90 0
118 rsb r0, r0, r2
119 0088 00309CE5 .LVL5:
120 008c 00209EE5 .LBB4:
121 0090 013063E0 .LBB5:
122 0094 032082E0 .loc 1 67 0
123 str r1, [ip, #0]
124 .loc 1 66 0
89:sysTime.c **** return getSysTICs() - startTime;
90:sysTime.c **** }
125
126 0098 020060E0 .LBE4:
127 .loc 1 90 0
128 ldr pc, [sp], #4
129 .L12:
130 .align 2
131 009c 00108CE5 .L11:
132 .word lastT0TC
133 00a0 00208EE5 .word -536854528
134 .word sysTICs
135 .LFE4:
137 00a4 04F09DE4 .align 2
138 .global pause
140 pause:
141 00a8 00000000 .LFB5:
142 00ac 004000E0 .loc 1 109 0
143 00b0 04000000 @ args = 0, pretend = 0, frame = 0
144 @ frame_needed = 0, uses_anonymous_args = 0
145 .LVL6:
146 stmfd sp!, {r4, r5, lr}
147 .LCFI1:
148 .LBB6:
149 .LBB7:
150 .loc 1 66 0
91:sysTime.c ****
92:sysTime.c ****
93:sysTime.c **** /******************************************************************************
94:sysTime.c **** *
95:sysTime.c **** * Function Name: pause()
96:sysTime.c **** *
97:sysTime.c **** * Description:
98:sysTime.c **** * This function does not return until the specified 'duration' in
99:sysTime.c **** * TICs has elapsed.
100:sysTime.c **** *
101:sysTime.c **** * Calling Sequence:
102:sysTime.c **** * duration - length of time in TICs to wait before returning
103:sysTime.c **** *
104:sysTime.c **** * Returns:
105:sysTime.c **** * void
106:sysTime.c **** *
107:sysTime.c **** *****************************************************************************/
108:sysTime.c **** void pause(uint32_t duration)
109:sysTime.c **** {
151 0
152 ldr r3, .L19+4
153 .loc 1 66 0
154 ldr lr, .L19+8
155 00b4 30402DE9 .loc 1 64 0
156 ldr r1, [r3, #8]
157 .LVL7:
158 .loc 1 66 0
159 ldr r3, [ip, #0]
160 00b8 38C09FE5 ldr r2, [lr, #0]
161 rsb r3, r3, r1
162 00bc 38309FE5 add r5, r2, r3
163 .loc 1 67 0
164 00c0 38E09FE5 str r1, [ip, #0]
165 .loc 1 66 0
166 00c4 081093E5 str r5, [lr, #0]
167 .LBE7:
168 .LBE6:
169 00c8 00309CE5 .loc 1 109 0
170 00cc 00209EE5 mov r4, r0
171 00d0 013063E0 .LVL8:
172 00d4 035082E0 .L14:
173 .loc 1 112 0
174 00d8 00108CE5 mov r0, r5
175 bl getElapsedSysTICs
176 00dc 00508EE5 .LVL9:
177 cmp r0, r4
178 bcc .L14
179 .loc 1 114 0
180 00e0 0040A0E1 ldmfd sp!, {r4, r5, pc}
181 .L20:
182 .align 2
110:sysTime.c **** uint32_t startTime = getSysTICs();
111:sysTime.c ****
112:sysTime.c **** while (getElapsedSysTICs(startTime) < duration)
183 6854528
184 00e4 0500A0E1 .word sysTICs
185 00e8 FEFFFFEB .LFE5:
187 00ec 040050E1 .bss
188 00f0 FBFFFF3A .align 2
113:sysTime.c **** WDOG();
114:sysTime.c **** }
189 TC:
190 00f4 3080BDE8 .space 4
191 .align 2
192 sysTICs:
193 .space 4
194 00f8 00000000 .section .debug_frame,"",%progbits
195 00fc 004000E0 .Lframe0:
196 0100 04000000 .4byte .LECIE0-.LSCIE0
197 .LSCIE0:
198 .4byte 0xffffffff
199 .byte 0x1
200 .ascii "\000"
201 .uleb128 0x1
202 0000 00000000 .sleb128 -4
203 .byte 0xe
204 .byte 0xc
205 0004 00000000 .uleb128 0xd
271 .4byte .LVL8-.Ltext0
DEFINED SYMBOLS
*ABS*:00000000 sysTime.c
C:\DOCUME~1\MINDAU~1\LOCALS~1\Temp/cc42aaaa.s:13 .text:00000000 initSysTime
C:\DOCUME~1\MINDAU~1\LOCALS~1\Temp/cc42aaaa.s:22 .text:00000000 $a
C:\DOCUME~1\MINDAU~1\LOCALS~1\Temp/cc42aaaa.s:52 .text:00000034 $d
C:\DOCUME~1\MINDAU~1\LOCALS~1\Temp/cc42aaaa.s:204 .bss:00000004 sysTICs
C:\DOCUME~1\MINDAU~1\LOCALS~1\Temp/cc42aaaa.s:59 .text:0000003c getSysTICs
C:\DOCUME~1\MINDAU~1\LOCALS~1\Temp/cc42aaaa.s:67 .text:0000003c $a
C:\DOCUME~1\MINDAU~1\LOCALS~1\Temp/cc42aaaa.s:91 .text:00000068 $d
C:\DOCUME~1\MINDAU~1\LOCALS~1\Temp/cc42aaaa.s:201 .bss:00000000 lastT0TC
C:\DOCUME~1\MINDAU~1\LOCALS~1\Temp/cc42aaaa.s:99 .text:00000074 getElapsedSysTICs
C:\DOCUME~1\MINDAU~1\LOCALS~1\Temp/cc42aaaa.s:105 .text:00000074 $a
C:\DOCUME~1\MINDAU~1\LOCALS~1\Temp/cc42aaaa.s:141 .text:000000a8 $d
C:\DOCUME~1\MINDAU~1\LOCALS~1\Temp/cc42aaaa.s:149 .text:000000b4 pause
C:\DOCUME~1\MINDAU~1\LOCALS~1\Temp/cc42aaaa.s:155 .text:000000b4 $a
C:\DOCUME~1\MINDAU~1\LOCALS~1\Temp/cc42aaaa.s:194 .text:000000f8 $d
NO UNDEFINED SYMBOLS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -