]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/Common/drivers/LuminaryMicro/hw_timer.h
Add FreeRTOS-Plus directory.
[freertos] / FreeRTOS / Demo / Common / drivers / LuminaryMicro / hw_timer.h
1 //*****************************************************************************\r
2 //\r
3 // hw_timer.h - Defines and macros used when accessing the timer.\r
4 //\r
5 // Copyright (c) 2005-2008 Luminary Micro, Inc.  All rights reserved.\r
6 // \r
7 // Software License Agreement\r
8 // \r
9 // Luminary Micro, Inc. (LMI) is supplying this software for use solely and\r
10 // exclusively on LMI's microcontroller products.\r
11 // \r
12 // The software is owned by LMI and/or its suppliers, and is protected under\r
13 // applicable copyright laws.  All rights are reserved.  You may not combine\r
14 // this software with "viral" open-source software in order to form a larger\r
15 // program.  Any use in violation of the foregoing restrictions may subject\r
16 // the user to criminal sanctions under applicable laws, as well as to civil\r
17 // liability for the breach of the terms and conditions of this license.\r
18 // \r
19 // THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED\r
20 // OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF\r
21 // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.\r
22 // LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR\r
23 // CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.\r
24 // \r
25 // This is part of revision 2523 of the Stellaris Peripheral Driver Library.\r
26 //\r
27 //*****************************************************************************\r
28 \r
29 #ifndef __HW_TIMER_H__\r
30 #define __HW_TIMER_H__\r
31 \r
32 //*****************************************************************************\r
33 //\r
34 // The following are defines for the timer register offsets.\r
35 //\r
36 //*****************************************************************************\r
37 #define TIMER_O_CFG             0x00000000  // Configuration register\r
38 #define TIMER_O_TAMR            0x00000004  // TimerA mode register\r
39 #define TIMER_O_TBMR            0x00000008  // TimerB mode register\r
40 #define TIMER_O_CTL             0x0000000C  // Control register\r
41 #define TIMER_O_IMR             0x00000018  // Interrupt mask register\r
42 #define TIMER_O_RIS             0x0000001C  // Interrupt status register\r
43 #define TIMER_O_MIS             0x00000020  // Masked interrupt status reg.\r
44 #define TIMER_O_ICR             0x00000024  // Interrupt clear register\r
45 #define TIMER_O_TAILR           0x00000028  // TimerA interval load register\r
46 #define TIMER_O_TBILR           0x0000002C  // TimerB interval load register\r
47 #define TIMER_O_TAMATCHR        0x00000030  // TimerA match register\r
48 #define TIMER_O_TBMATCHR        0x00000034  // TimerB match register\r
49 #define TIMER_O_TAPR            0x00000038  // TimerA prescale register\r
50 #define TIMER_O_TBPR            0x0000003C  // TimerB prescale register\r
51 #define TIMER_O_TAPMR           0x00000040  // TimerA prescale match register\r
52 #define TIMER_O_TBPMR           0x00000044  // TimerB prescale match register\r
53 #define TIMER_O_TAR             0x00000048  // TimerA register\r
54 #define TIMER_O_TBR             0x0000004C  // TimerB register\r
55 \r
56 //*****************************************************************************\r
57 //\r
58 // The following are defines for the bit fields in the TIMER_CFG register.\r
59 //\r
60 //*****************************************************************************\r
61 #define TIMER_CFG_M             0x00000007  // GPTM Configuration.\r
62 #define TIMER_CFG_16_BIT        0x00000004  // Two 16 bit timers\r
63 #define TIMER_CFG_32_BIT_RTC    0x00000001  // 32 bit RTC\r
64 #define TIMER_CFG_32_BIT_TIMER  0x00000000  // 32 bit timer\r
65 \r
66 //*****************************************************************************\r
67 //\r
68 // The following are defines for the bit fields in the TIMER_CTL register.\r
69 //\r
70 //*****************************************************************************\r
71 #define TIMER_CTL_TBPWML        0x00004000  // TimerB PWM output level invert\r
72 #define TIMER_CTL_TBOTE         0x00002000  // TimerB output trigger enable\r
73 #define TIMER_CTL_TBEVENT_POS   0x00000000  // TimerB event mode - pos edge\r
74 #define TIMER_CTL_TBEVENT_NEG   0x00000400  // TimerB event mode - neg edge\r
75 #define TIMER_CTL_TBEVENT_BOTH  0x00000C00  // TimerB event mode - both edges\r
76 #define TIMER_CTL_TBEVENT_M     0x00000C00  // GPTM TimerB Event Mode.\r
77 #define TIMER_CTL_TBSTALL       0x00000200  // TimerB stall enable\r
78 #define TIMER_CTL_TBEN          0x00000100  // TimerB enable\r
79 #define TIMER_CTL_TAPWML        0x00000040  // TimerA PWM output level invert\r
80 #define TIMER_CTL_TAOTE         0x00000020  // TimerA output trigger enable\r
81 #define TIMER_CTL_RTCEN         0x00000010  // RTC counter enable\r
82 #define TIMER_CTL_TAEVENT_M     0x0000000C  // GPTM TimerA Event Mode.\r
83 #define TIMER_CTL_TAEVENT_POS   0x00000000  // TimerA event mode - pos edge\r
84 #define TIMER_CTL_TAEVENT_NEG   0x00000004  // TimerA event mode - neg edge\r
85 #define TIMER_CTL_TAEVENT_BOTH  0x0000000C  // TimerA event mode - both edges\r
86 #define TIMER_CTL_TASTALL       0x00000002  // TimerA stall enable\r
87 #define TIMER_CTL_TAEN          0x00000001  // TimerA enable\r
88 \r
89 //*****************************************************************************\r
90 //\r
91 // The following are defines for the bit fields in the TIMER_IMR register.\r
92 //\r
93 //*****************************************************************************\r
94 #define TIMER_IMR_CBEIM         0x00000400  // CaptureB event interrupt mask\r
95 #define TIMER_IMR_CBMIM         0x00000200  // CaptureB match interrupt mask\r
96 #define TIMER_IMR_TBTOIM        0x00000100  // TimerB time out interrupt mask\r
97 #define TIMER_IMR_RTCIM         0x00000008  // RTC interrupt mask\r
98 #define TIMER_IMR_CAEIM         0x00000004  // CaptureA event interrupt mask\r
99 #define TIMER_IMR_CAMIM         0x00000002  // CaptureA match interrupt mask\r
100 #define TIMER_IMR_TATOIM        0x00000001  // TimerA time out interrupt mask\r
101 \r
102 //*****************************************************************************\r
103 //\r
104 // The following are defines for the bit fields in the TIMER_RIS register.\r
105 //\r
106 //*****************************************************************************\r
107 #define TIMER_RIS_CBERIS        0x00000400  // CaptureB event raw int status\r
108 #define TIMER_RIS_CBMRIS        0x00000200  // CaptureB match raw int status\r
109 #define TIMER_RIS_TBTORIS       0x00000100  // TimerB time out raw int status\r
110 #define TIMER_RIS_RTCRIS        0x00000008  // RTC raw int status\r
111 #define TIMER_RIS_CAERIS        0x00000004  // CaptureA event raw int status\r
112 #define TIMER_RIS_CAMRIS        0x00000002  // CaptureA match raw int status\r
113 #define TIMER_RIS_TATORIS       0x00000001  // TimerA time out raw int status\r
114 \r
115 //*****************************************************************************\r
116 //\r
117 // The following are defines for the bit fields in the TIMER_ICR register.\r
118 //\r
119 //*****************************************************************************\r
120 #define TIMER_ICR_CBECINT       0x00000400  // CaptureB event interrupt clear\r
121 #define TIMER_ICR_CBMCINT       0x00000200  // CaptureB match interrupt clear\r
122 #define TIMER_ICR_TBTOCINT      0x00000100  // TimerB time out interrupt clear\r
123 #define TIMER_ICR_RTCCINT       0x00000008  // RTC interrupt clear\r
124 #define TIMER_ICR_CAECINT       0x00000004  // CaptureA event interrupt clear\r
125 #define TIMER_ICR_CAMCINT       0x00000002  // CaptureA match interrupt clear\r
126 #define TIMER_ICR_TATOCINT      0x00000001  // TimerA time out interrupt clear\r
127 \r
128 //*****************************************************************************\r
129 //\r
130 // The following are defines for the bit fields in the TIMER_TAILR register.\r
131 //\r
132 //*****************************************************************************\r
133 #define TIMER_TAILR_TAILRH_M    0xFFFF0000  // GPTM TimerA Interval Load\r
134                                             // Register High.\r
135 #define TIMER_TAILR_TAILRL_M    0x0000FFFF  // GPTM TimerA Interval Load\r
136                                             // Register Low.\r
137 #define TIMER_TAILR_TAILRH_S    16\r
138 #define TIMER_TAILR_TAILRL_S    0\r
139 \r
140 //*****************************************************************************\r
141 //\r
142 // The following are defines for the bit fields in the TIMER_TBILR register.\r
143 //\r
144 //*****************************************************************************\r
145 #define TIMER_TBILR_TBILRL_M    0x0000FFFF  // GPTM TimerB Interval Load\r
146                                             // Register.\r
147 #define TIMER_TBILR_TBILRL_S    0\r
148 \r
149 //*****************************************************************************\r
150 //\r
151 // The following are defines for the bit fields in the TIMER_TAMATCHR register.\r
152 //\r
153 //*****************************************************************************\r
154 #define TIMER_TAMATCHR_TAMRH_M  0xFFFF0000  // GPTM TimerA Match Register High.\r
155 #define TIMER_TAMATCHR_TAMRL_M  0x0000FFFF  // GPTM TimerA Match Register Low.\r
156 #define TIMER_TAMATCHR_TAMRH_S  16\r
157 #define TIMER_TAMATCHR_TAMRL_S  0\r
158 \r
159 //*****************************************************************************\r
160 //\r
161 // The following are defines for the bit fields in the TIMER_TBMATCHR register.\r
162 //\r
163 //*****************************************************************************\r
164 #define TIMER_TBMATCHR_TBMRL_M  0x0000FFFF  // GPTM TimerB Match Register Low.\r
165 #define TIMER_TBMATCHR_TBMRL_S  0\r
166 \r
167 //*****************************************************************************\r
168 //\r
169 // The following are defines for the bit fields in the TIMER_TAR register.\r
170 //\r
171 //*****************************************************************************\r
172 #define TIMER_TAR_TARH_M        0xFFFF0000  // GPTM TimerA Register High.\r
173 #define TIMER_TAR_TARL_M        0x0000FFFF  // GPTM TimerA Register Low.\r
174 #define TIMER_TAR_TARH_S        16\r
175 #define TIMER_TAR_TARL_S        0\r
176 \r
177 //*****************************************************************************\r
178 //\r
179 // The following are defines for the bit fields in the TIMER_TBR register.\r
180 //\r
181 //*****************************************************************************\r
182 #define TIMER_TBR_TBRL_M        0x0000FFFF  // GPTM TimerB.\r
183 #define TIMER_TBR_TBRL_S        0\r
184 \r
185 //*****************************************************************************\r
186 //\r
187 // The following are defines for the bit fields in the TIMER_O_TAMR register.\r
188 //\r
189 //*****************************************************************************\r
190 #define TIMER_TAMR_TAAMS        0x00000008  // GPTM TimerA Alternate Mode\r
191                                             // Select.\r
192 #define TIMER_TAMR_TACMR        0x00000004  // GPTM TimerA Capture Mode.\r
193 #define TIMER_TAMR_TAMR_M       0x00000003  // GPTM TimerA Mode.\r
194 #define TIMER_TAMR_TAMR_1_SHOT  0x00000001  // One-Shot Timer mode.\r
195 #define TIMER_TAMR_TAMR_PERIOD  0x00000002  // Periodic Timer mode.\r
196 #define TIMER_TAMR_TAMR_CAP     0x00000003  // Capture mode.\r
197 \r
198 //*****************************************************************************\r
199 //\r
200 // The following are defines for the bit fields in the TIMER_O_TBMR register.\r
201 //\r
202 //*****************************************************************************\r
203 #define TIMER_TBMR_TBAMS        0x00000008  // GPTM TimerB Alternate Mode\r
204                                             // Select.\r
205 #define TIMER_TBMR_TBCMR        0x00000004  // GPTM TimerB Capture Mode.\r
206 #define TIMER_TBMR_TBMR_M       0x00000003  // GPTM TimerB Mode.\r
207 #define TIMER_TBMR_TBMR_1_SHOT  0x00000001  // One-Shot Timer mode.\r
208 #define TIMER_TBMR_TBMR_PERIOD  0x00000002  // Periodic Timer mode.\r
209 #define TIMER_TBMR_TBMR_CAP     0x00000003  // Capture mode.\r
210 \r
211 //*****************************************************************************\r
212 //\r
213 // The following are defines for the bit fields in the TIMER_O_MIS register.\r
214 //\r
215 //*****************************************************************************\r
216 #define TIMER_MIS_CBEMIS        0x00000400  // GPTM CaptureB Event Masked\r
217                                             // Interrupt.\r
218 #define TIMER_MIS_CBMMIS        0x00000200  // GPTM CaptureB Match Masked\r
219                                             // Interrupt.\r
220 #define TIMER_MIS_TBTOMIS       0x00000100  // GPTM TimerB Time-Out Masked\r
221                                             // Interrupt.\r
222 #define TIMER_MIS_RTCMIS        0x00000008  // GPTM RTC Masked Interrupt.\r
223 #define TIMER_MIS_CAEMIS        0x00000004  // GPTM CaptureA Event Masked\r
224                                             // Interrupt.\r
225 #define TIMER_MIS_CAMMIS        0x00000002  // GPTM CaptureA Match Masked\r
226                                             // Interrupt.\r
227 #define TIMER_MIS_TATOMIS       0x00000001  // GPTM TimerA Time-Out Masked\r
228                                             // Interrupt.\r
229 \r
230 //*****************************************************************************\r
231 //\r
232 // The following are defines for the bit fields in the TIMER_O_TAPR register.\r
233 //\r
234 //*****************************************************************************\r
235 #define TIMER_TAPR_TAPSR_M      0x000000FF  // GPTM TimerA Prescale.\r
236 #define TIMER_TAPR_TAPSR_S      0\r
237 \r
238 //*****************************************************************************\r
239 //\r
240 // The following are defines for the bit fields in the TIMER_O_TBPR register.\r
241 //\r
242 //*****************************************************************************\r
243 #define TIMER_TBPR_TBPSR_M      0x000000FF  // GPTM TimerB Prescale.\r
244 #define TIMER_TBPR_TBPSR_S      0\r
245 \r
246 //*****************************************************************************\r
247 //\r
248 // The following are defines for the bit fields in the TIMER_O_TAPMR register.\r
249 //\r
250 //*****************************************************************************\r
251 #define TIMER_TAPMR_TAPSMR_M    0x000000FF  // GPTM TimerA Prescale Match.\r
252 #define TIMER_TAPMR_TAPSMR_S    0\r
253 \r
254 //*****************************************************************************\r
255 //\r
256 // The following are defines for the bit fields in the TIMER_O_TBPMR register.\r
257 //\r
258 //*****************************************************************************\r
259 #define TIMER_TBPMR_TBPSMR_M    0x000000FF  // GPTM TimerB Prescale Match.\r
260 #define TIMER_TBPMR_TBPSMR_S    0\r
261 \r
262 //*****************************************************************************\r
263 //\r
264 // The following definitions are deprecated.\r
265 //\r
266 //*****************************************************************************\r
267 #ifndef DEPRECATED\r
268 \r
269 //*****************************************************************************\r
270 //\r
271 // The following are deprecated defines for the reset values of the timer\r
272 // registers.\r
273 //\r
274 //*****************************************************************************\r
275 #define TIMER_RV_TAILR          0xFFFFFFFF  // TimerA interval load reg RV\r
276 #define TIMER_RV_TAR            0xFFFFFFFF  // TimerA register RV\r
277 #define TIMER_RV_TAMATCHR       0xFFFFFFFF  // TimerA match register RV\r
278 #define TIMER_RV_TBILR          0x0000FFFF  // TimerB interval load reg RV\r
279 #define TIMER_RV_TBMATCHR       0x0000FFFF  // TimerB match register RV\r
280 #define TIMER_RV_TBR            0x0000FFFF  // TimerB register RV\r
281 #define TIMER_RV_TAPR           0x00000000  // TimerA prescale register RV\r
282 #define TIMER_RV_CFG            0x00000000  // Configuration register RV\r
283 #define TIMER_RV_TBPMR          0x00000000  // TimerB prescale match regi RV\r
284 #define TIMER_RV_TAPMR          0x00000000  // TimerA prescale match reg RV\r
285 #define TIMER_RV_CTL            0x00000000  // Control register RV\r
286 #define TIMER_RV_ICR            0x00000000  // Interrupt clear register RV\r
287 #define TIMER_RV_TBMR           0x00000000  // TimerB mode register RV\r
288 #define TIMER_RV_MIS            0x00000000  // Masked interrupt status reg RV\r
289 #define TIMER_RV_RIS            0x00000000  // Interrupt status register RV\r
290 #define TIMER_RV_TBPR           0x00000000  // TimerB prescale register RV\r
291 #define TIMER_RV_IMR            0x00000000  // Interrupt mask register RV\r
292 #define TIMER_RV_TAMR           0x00000000  // TimerA mode register RV\r
293 \r
294 //*****************************************************************************\r
295 //\r
296 // The following are deprecated defines for the bit fields in the TIMER_CFG\r
297 // register.\r
298 //\r
299 //*****************************************************************************\r
300 #define TIMER_CFG_CFG_MSK       0x00000007  // Configuration options mask\r
301 \r
302 //*****************************************************************************\r
303 //\r
304 // The following are deprecated defines for the bit fields in the TIMER_TnMR\r
305 // register.\r
306 //\r
307 //*****************************************************************************\r
308 #define TIMER_TNMR_TNAMS        0x00000008  // Alternate mode select\r
309 #define TIMER_TNMR_TNCMR        0x00000004  // Capture mode - count or time\r
310 #define TIMER_TNMR_TNTMR_MSK    0x00000003  // Timer mode mask\r
311 #define TIMER_TNMR_TNTMR_1_SHOT 0x00000001  // Mode - one shot\r
312 #define TIMER_TNMR_TNTMR_PERIOD 0x00000002  // Mode - periodic\r
313 #define TIMER_TNMR_TNTMR_CAP    0x00000003  // Mode - capture\r
314 \r
315 //*****************************************************************************\r
316 //\r
317 // The following are deprecated defines for the bit fields in the TIMER_CTL\r
318 // register.\r
319 //\r
320 //*****************************************************************************\r
321 #define TIMER_CTL_TBEVENT_MSK   0x00000C00  // TimerB event mode mask\r
322 #define TIMER_CTL_TAEVENT_MSK   0x0000000C  // TimerA event mode mask\r
323 \r
324 //*****************************************************************************\r
325 //\r
326 // The following are deprecated defines for the bit fields in the TIMER_MIS\r
327 // register.\r
328 //\r
329 //*****************************************************************************\r
330 #define TIMER_RIS_CBEMIS        0x00000400  // CaptureB event masked int status\r
331 #define TIMER_RIS_CBMMIS        0x00000200  // CaptureB match masked int status\r
332 #define TIMER_RIS_TBTOMIS       0x00000100  // TimerB time out masked int stat\r
333 #define TIMER_RIS_RTCMIS        0x00000008  // RTC masked int status\r
334 #define TIMER_RIS_CAEMIS        0x00000004  // CaptureA event masked int status\r
335 #define TIMER_RIS_CAMMIS        0x00000002  // CaptureA match masked int status\r
336 #define TIMER_RIS_TATOMIS       0x00000001  // TimerA time out masked int stat\r
337 \r
338 //*****************************************************************************\r
339 //\r
340 // The following are deprecated defines for the bit fields in the TIMER_TAILR\r
341 // register.\r
342 //\r
343 //*****************************************************************************\r
344 #define TIMER_TAILR_TAILRH      0xFFFF0000  // TimerB load val in 32 bit mode\r
345 #define TIMER_TAILR_TAILRL      0x0000FFFF  // TimerA interval load value\r
346 \r
347 //*****************************************************************************\r
348 //\r
349 // The following are deprecated defines for the bit fields in the TIMER_TBILR\r
350 // register.\r
351 //\r
352 //*****************************************************************************\r
353 #define TIMER_TBILR_TBILRL      0x0000FFFF  // TimerB interval load value\r
354 \r
355 //*****************************************************************************\r
356 //\r
357 // The following are deprecated defines for the bit fields in the\r
358 // TIMER_TAMATCHR register.\r
359 //\r
360 //*****************************************************************************\r
361 #define TIMER_TAMATCHR_TAMRH    0xFFFF0000  // TimerB match val in 32 bit mode\r
362 #define TIMER_TAMATCHR_TAMRL    0x0000FFFF  // TimerA match value\r
363 \r
364 //*****************************************************************************\r
365 //\r
366 // The following are deprecated defines for the bit fields in the\r
367 // TIMER_TBMATCHR register.\r
368 //\r
369 //*****************************************************************************\r
370 #define TIMER_TBMATCHR_TBMRL    0x0000FFFF  // TimerB match load value\r
371 \r
372 //*****************************************************************************\r
373 //\r
374 // The following are deprecated defines for the bit fields in the TIMER_TnPR\r
375 // register.\r
376 //\r
377 //*****************************************************************************\r
378 #define TIMER_TNPR_TNPSR        0x000000FF  // TimerN prescale value\r
379 \r
380 //*****************************************************************************\r
381 //\r
382 // The following are deprecated defines for the bit fields in the TIMER_TnPMR\r
383 // register.\r
384 //\r
385 //*****************************************************************************\r
386 #define TIMER_TNPMR_TNPSMR      0x000000FF  // TimerN prescale match value\r
387 \r
388 //*****************************************************************************\r
389 //\r
390 // The following are deprecated defines for the bit fields in the TIMER_TAR\r
391 // register.\r
392 //\r
393 //*****************************************************************************\r
394 #define TIMER_TAR_TARH          0xFFFF0000  // TimerB val in 32 bit mode\r
395 #define TIMER_TAR_TARL          0x0000FFFF  // TimerA value\r
396 \r
397 //*****************************************************************************\r
398 //\r
399 // The following are deprecated defines for the bit fields in the TIMER_TBR\r
400 // register.\r
401 //\r
402 //*****************************************************************************\r
403 #define TIMER_TBR_TBRL          0x0000FFFF  // TimerB value\r
404 \r
405 #endif\r
406 \r
407 #endif // __HW_TIMER_H__\r