1 //*****************************************************************************
\r
3 // timer.h - Prototypes for the timer module
\r
5 // Copyright (c) 2005-2008 Luminary Micro, Inc. All rights reserved.
\r
7 // Software License Agreement
\r
9 // Luminary Micro, Inc. (LMI) is supplying this software for use solely and
\r
10 // exclusively on LMI's microcontroller products.
\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
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
25 // This is part of revision 2523 of the Stellaris Peripheral Driver Library.
\r
27 //*****************************************************************************
\r
32 //*****************************************************************************
\r
34 // If building with a C++ compiler, make all of the definitions in this header
\r
35 // have a C binding.
\r
37 //*****************************************************************************
\r
43 //*****************************************************************************
\r
45 // Values that can be passed to TimerConfigure as the ulConfig parameter.
\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
63 //*****************************************************************************
\r
65 // Values that can be passed to TimerIntEnable, TimerIntDisable, and
\r
66 // TimerIntClear as the ulIntFlags parameter, and returned from TimerIntStatus.
\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
77 //*****************************************************************************
\r
79 // Values that can be passed to TimerControlEvent as the ulEvent parameter.
\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
86 //*****************************************************************************
\r
88 // Values that can be passed to most of the timer APIs as the ulTimer
\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
96 //*****************************************************************************
\r
98 // Prototypes for the APIs.
\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
106 extern void TimerControlTrigger(unsigned long ulBase, unsigned long ulTimer,
\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
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
135 //*****************************************************************************
\r
137 // TimerQuiesce() has been deprecated. SysCtlPeripheralReset() should be used
\r
138 // instead to return the timer to its reset state.
\r
140 //*****************************************************************************
\r
142 extern void TimerQuiesce(unsigned long ulBase);
\r
145 //*****************************************************************************
\r
147 // Mark the end of the C bindings section for C++ compilers.
\r
149 //*****************************************************************************
\r
154 #endif // __TIMER_H__
\r