]> git.sur5r.net Git - freertos/blob - Demo/Common/drivers/LuminaryMicro/timer.h
Start to re-arrange files to include FreeRTOS+ in main download.
[freertos] / Demo / Common / drivers / LuminaryMicro / timer.h
1 //*****************************************************************************\r
2 //\r
3 // timer.h - Prototypes for the timer module\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 __TIMER_H__\r
30 #define __TIMER_H__\r
31 \r
32 //*****************************************************************************\r
33 //\r
34 // If building with a C++ compiler, make all of the definitions in this header\r
35 // have a C binding.\r
36 //\r
37 //*****************************************************************************\r
38 #ifdef __cplusplus\r
39 extern "C"\r
40 {\r
41 #endif\r
42 \r
43 //*****************************************************************************\r
44 //\r
45 // Values that can be passed to TimerConfigure as the ulConfig parameter.\r
46 //\r
47 //*****************************************************************************\r
48 #define TIMER_CFG_32_BIT_OS     0x00000001  // 32-bit one-shot timer\r
49 #define TIMER_CFG_32_BIT_PER    0x00000002  // 32-bit periodic timer\r
50 #define TIMER_CFG_32_RTC        0x01000000  // 32-bit RTC timer\r
51 #define TIMER_CFG_16_BIT_PAIR   0x04000000  // Two 16-bit timers\r
52 #define TIMER_CFG_A_ONE_SHOT    0x00000001  // Timer A one-shot timer\r
53 #define TIMER_CFG_A_PERIODIC    0x00000002  // Timer A periodic timer\r
54 #define TIMER_CFG_A_CAP_COUNT   0x00000003  // Timer A event counter\r
55 #define TIMER_CFG_A_CAP_TIME    0x00000007  // Timer A event timer\r
56 #define TIMER_CFG_A_PWM         0x0000000A  // Timer A PWM output\r
57 #define TIMER_CFG_B_ONE_SHOT    0x00000100  // Timer B one-shot timer\r
58 #define TIMER_CFG_B_PERIODIC    0x00000200  // Timer B periodic timer\r
59 #define TIMER_CFG_B_CAP_COUNT   0x00000300  // Timer B event counter\r
60 #define TIMER_CFG_B_CAP_TIME    0x00000700  // Timer B event timer\r
61 #define TIMER_CFG_B_PWM         0x00000A00  // Timer B PWM output\r
62 \r
63 //*****************************************************************************\r
64 //\r
65 // Values that can be passed to TimerIntEnable, TimerIntDisable, and\r
66 // TimerIntClear as the ulIntFlags parameter, and returned from TimerIntStatus.\r
67 //\r
68 //*****************************************************************************\r
69 #define TIMER_CAPB_EVENT        0x00000400  // CaptureB event interrupt\r
70 #define TIMER_CAPB_MATCH        0x00000200  // CaptureB match interrupt\r
71 #define TIMER_TIMB_TIMEOUT      0x00000100  // TimerB time out interrupt\r
72 #define TIMER_RTC_MATCH         0x00000008  // RTC interrupt mask\r
73 #define TIMER_CAPA_EVENT        0x00000004  // CaptureA event interrupt\r
74 #define TIMER_CAPA_MATCH        0x00000002  // CaptureA match interrupt\r
75 #define TIMER_TIMA_TIMEOUT      0x00000001  // TimerA time out interrupt\r
76 \r
77 //*****************************************************************************\r
78 //\r
79 // Values that can be passed to TimerControlEvent as the ulEvent parameter.\r
80 //\r
81 //*****************************************************************************\r
82 #define TIMER_EVENT_POS_EDGE    0x00000000  // Count positive edges\r
83 #define TIMER_EVENT_NEG_EDGE    0x00000404  // Count negative edges\r
84 #define TIMER_EVENT_BOTH_EDGES  0x00000C0C  // Count both edges\r
85 \r
86 //*****************************************************************************\r
87 //\r
88 // Values that can be passed to most of the timer APIs as the ulTimer\r
89 // parameter.\r
90 //\r
91 //*****************************************************************************\r
92 #define TIMER_A                 0x000000ff  // Timer A\r
93 #define TIMER_B                 0x0000ff00  // Timer B\r
94 #define TIMER_BOTH              0x0000ffff  // Timer Both\r
95 \r
96 //*****************************************************************************\r
97 //\r
98 // Prototypes for the APIs.\r
99 //\r
100 //*****************************************************************************\r
101 extern void TimerEnable(unsigned long ulBase, unsigned long ulTimer);\r
102 extern void TimerDisable(unsigned long ulBase, unsigned long ulTimer);\r
103 extern void TimerConfigure(unsigned long ulBase, unsigned long ulConfig);\r
104 extern void TimerControlLevel(unsigned long ulBase, unsigned long ulTimer,\r
105                               tBoolean bInvert);\r
106 extern void TimerControlTrigger(unsigned long ulBase, unsigned long ulTimer,\r
107                                 tBoolean bEnable);\r
108 extern void TimerControlEvent(unsigned long ulBase, unsigned long ulTimer,\r
109                               unsigned long ulEvent);\r
110 extern void TimerControlStall(unsigned long ulBase, unsigned long ulTimer,\r
111                               tBoolean bStall);\r
112 extern void TimerRTCEnable(unsigned long ulBase);\r
113 extern void TimerRTCDisable(unsigned long ulBase);\r
114 extern void TimerPrescaleSet(unsigned long ulBase, unsigned long ulTimer,\r
115                              unsigned long ulValue);\r
116 extern unsigned long TimerPrescaleGet(unsigned long ulBase,\r
117                                       unsigned long ulTimer);\r
118 extern void TimerLoadSet(unsigned long ulBase, unsigned long ulTimer,\r
119                          unsigned long ulValue);\r
120 extern unsigned long TimerLoadGet(unsigned long ulBase, unsigned long ulTimer);\r
121 extern unsigned long TimerValueGet(unsigned long ulBase,\r
122                                    unsigned long ulTimer);\r
123 extern void TimerMatchSet(unsigned long ulBase, unsigned long ulTimer,\r
124                           unsigned long ulValue);\r
125 extern unsigned long TimerMatchGet(unsigned long ulBase,\r
126                                    unsigned long ulTimer);\r
127 extern void TimerIntRegister(unsigned long ulBase, unsigned long ulTimer,\r
128                              void (*pfnHandler)(void));\r
129 extern void TimerIntUnregister(unsigned long ulBase, unsigned long ulTimer);\r
130 extern void TimerIntEnable(unsigned long ulBase, unsigned long ulIntFlags);\r
131 extern void TimerIntDisable(unsigned long ulBase, unsigned long ulIntFlags);\r
132 extern unsigned long TimerIntStatus(unsigned long ulBase, tBoolean bMasked);\r
133 extern void TimerIntClear(unsigned long ulBase, unsigned long ulIntFlags);\r
134 \r
135 //*****************************************************************************\r
136 //\r
137 // TimerQuiesce() has been deprecated.  SysCtlPeripheralReset() should be used\r
138 // instead to return the timer to its reset state.\r
139 //\r
140 //*****************************************************************************\r
141 #ifndef DEPRECATED\r
142 extern void TimerQuiesce(unsigned long ulBase);\r
143 #endif\r
144 \r
145 //*****************************************************************************\r
146 //\r
147 // Mark the end of the C bindings section for C++ compilers.\r
148 //\r
149 //*****************************************************************************\r
150 #ifdef __cplusplus\r
151 }\r
152 #endif\r
153 \r
154 #endif // __TIMER_H__\r