1 //***************************************************************************** 2 // 3 // timer.h - Prototypes for the timer module 4 // 5 // Copyright (c) 2005-2012 Texas Instruments Incorporated. All rights reserved. 6 // Software License Agreement 7 // 8 // Redistribution and use in source and binary forms, with or without 9 // modification, are permitted provided that the following conditions 10 // are met: 11 // 12 // Redistributions of source code must retain the above copyright 13 // notice, this list of conditions and the following disclaimer. 14 // 15 // Redistributions in binary form must reproduce the above copyright 16 // notice, this list of conditions and the following disclaimer in the 17 // documentation and/or other materials provided with the 18 // distribution. 19 // 20 // Neither the name of Texas Instruments Incorporated nor the names of 21 // its contributors may be used to endorse or promote products derived 22 // from this software without specific prior written permission. 23 // 24 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 25 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 26 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 27 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 28 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 29 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 30 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 31 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 32 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 33 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 34 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 35 // 36 // This is part of revision 9453 of the Stellaris Peripheral Driver Library. 37 // 38 //***************************************************************************** 39 40 #ifndef __TIMER_H__ 41 #define __TIMER_H__ 42 43 //***************************************************************************** 44 // 45 // If building with a C++ compiler, make all of the definitions in this header 46 // have a C binding. 47 // 48 //***************************************************************************** 49 #ifdef __cplusplus 50 extern "C" 51 { 52 #endif 53 54 //***************************************************************************** 55 // 56 // Values that can be passed to TimerConfigure as the ulConfig parameter. 57 // 58 //***************************************************************************** 59 #define TIMER_CFG_ONE_SHOT 0x00000021 // Full-width one-shot timer 60 #define TIMER_CFG_ONE_SHOT_UP 0x00000031 // Full-width one-shot up-count 61 // timer 62 #define TIMER_CFG_PERIODIC 0x00000022 // Full-width periodic timer 63 #define TIMER_CFG_PERIODIC_UP 0x00000032 // Full-width periodic up-count 64 // timer 65 #define TIMER_CFG_RTC 0x01000000 // Full-width RTC timer 66 #define TIMER_CFG_SPLIT_PAIR 0x04000000 // Two half-width timers 67 #define TIMER_CFG_A_ONE_SHOT 0x00000021 // Timer A one-shot timer 68 #define TIMER_CFG_A_ONE_SHOT_UP 0x00000031 // Timer A one-shot up-count timer 69 #define TIMER_CFG_A_PERIODIC 0x00000022 // Timer A periodic timer 70 #define TIMER_CFG_A_PERIODIC_UP 0x00000032 // Timer A periodic up-count timer 71 #define TIMER_CFG_A_CAP_COUNT 0x00000003 // Timer A event counter 72 #define TIMER_CFG_A_CAP_COUNT_UP 0x00000013 // Timer A event up-counter 73 #define TIMER_CFG_A_CAP_TIME 0x00000007 // Timer A event timer 74 #define TIMER_CFG_A_CAP_TIME_UP 0x00000017 // Timer A event up-count timer 75 #define TIMER_CFG_A_PWM 0x0000000A // Timer A PWM output 76 #define TIMER_CFG_B_ONE_SHOT 0x00002100 // Timer B one-shot timer 77 #define TIMER_CFG_B_ONE_SHOT_UP 0x00003100 // Timer B one-shot up-count timer 78 #define TIMER_CFG_B_PERIODIC 0x00002200 // Timer B periodic timer 79 #define TIMER_CFG_B_PERIODIC_UP 0x00003200 // Timer B periodic up-count timer 80 #define TIMER_CFG_B_CAP_COUNT 0x00000300 // Timer B event counter 81 #define TIMER_CFG_B_CAP_COUNT_UP 0x00001300 // Timer B event up-counter 82 #define TIMER_CFG_B_CAP_TIME 0x00000700 // Timer B event timer 83 #define TIMER_CFG_B_CAP_TIME_UP 0x00001700 // Timer B event up-count timer 84 #define TIMER_CFG_B_PWM 0x00000A00 // Timer B PWM output 85 86 //***************************************************************************** 87 // 88 // Values that can be passed to TimerIntEnable, TimerIntDisable, and 89 // TimerIntClear as the ulIntFlags parameter, and returned from TimerIntStatus. 90 // 91 //***************************************************************************** 92 #define TIMER_TIMB_MATCH 0x00000800 // TimerB match interrupt 93 #define TIMER_CAPB_EVENT 0x00000400 // CaptureB event interrupt 94 #define TIMER_CAPB_MATCH 0x00000200 // CaptureB match interrupt 95 #define TIMER_TIMB_TIMEOUT 0x00000100 // TimerB time out interrupt 96 #define TIMER_TIMA_MATCH 0x00000010 // TimerA match interrupt 97 #define TIMER_RTC_MATCH 0x00000008 // RTC interrupt mask 98 #define TIMER_CAPA_EVENT 0x00000004 // CaptureA event interrupt 99 #define TIMER_CAPA_MATCH 0x00000002 // CaptureA match interrupt 100 #define TIMER_TIMA_TIMEOUT 0x00000001 // TimerA time out interrupt 101 102 //***************************************************************************** 103 // 104 // Values that can be passed to TimerControlEvent as the ulEvent parameter. 105 // 106 //***************************************************************************** 107 #define TIMER_EVENT_POS_EDGE 0x00000000 // Count positive edges 108 #define TIMER_EVENT_NEG_EDGE 0x00000404 // Count negative edges 109 #define TIMER_EVENT_BOTH_EDGES 0x00000C0C // Count both edges 110 111 //***************************************************************************** 112 // 113 // Values that can be passed to most of the timer APIs as the ulTimer 114 // parameter. 115 // 116 //***************************************************************************** 117 #define TIMER_A 0x000000ff // Timer A 118 #define TIMER_B 0x0000ff00 // Timer B 119 #define TIMER_BOTH 0x0000ffff // Timer Both 120 121 //***************************************************************************** 122 // 123 // Values that can be passed to TimerSynchronize as the ulTimers parameter. 124 // 125 //***************************************************************************** 126 #define TIMER_0A_SYNC 0x00000001 // Synchronize Timer 0A 127 #define TIMER_0B_SYNC 0x00000002 // Synchronize Timer 0B 128 #define TIMER_1A_SYNC 0x00000004 // Synchronize Timer 1A 129 #define TIMER_1B_SYNC 0x00000008 // Synchronize Timer 1B 130 #define TIMER_2A_SYNC 0x00000010 // Synchronize Timer 2A 131 #define TIMER_2B_SYNC 0x00000020 // Synchronize Timer 2B 132 #define TIMER_3A_SYNC 0x00000040 // Synchronize Timer 3A 133 #define TIMER_3B_SYNC 0x00000080 // Synchronize Timer 3B 134 #define TIMER_4A_SYNC 0x00000100 // Synchronize Timer 4A 135 #define TIMER_4B_SYNC 0x00000200 // Synchronize Timer 4B 136 #define TIMER_5A_SYNC 0x00000400 // Synchronize Timer 5A 137 #define TIMER_5B_SYNC 0x00000800 // Synchronize Timer 5B 138 #define WTIMER_0A_SYNC 0x00001000 // Synchronize Wide Timer 0A 139 #define WTIMER_0B_SYNC 0x00002000 // Synchronize Wide Timer 0B 140 #define WTIMER_1A_SYNC 0x00004000 // Synchronize Wide Timer 1A 141 #define WTIMER_1B_SYNC 0x00008000 // Synchronize Wide Timer 1B 142 #define WTIMER_2A_SYNC 0x00010000 // Synchronize Wide Timer 2A 143 #define WTIMER_2B_SYNC 0x00020000 // Synchronize Wide Timer 2B 144 #define WTIMER_3A_SYNC 0x00040000 // Synchronize Wide Timer 3A 145 #define WTIMER_3B_SYNC 0x00080000 // Synchronize Wide Timer 3B 146 #define WTIMER_4A_SYNC 0x00100000 // Synchronize Wide Timer 4A 147 #define WTIMER_4B_SYNC 0x00200000 // Synchronize Wide Timer 4B 148 #define WTIMER_5A_SYNC 0x00400000 // Synchronize Wide Timer 5A 149 #define WTIMER_5B_SYNC 0x00800000 // Synchronize Wide Timer 5B 150 151 //***************************************************************************** 152 // 153 // Prototypes for the APIs. 154 // 155 //***************************************************************************** 156 extern void TimerEnable(unsigned long ulBase, unsigned long ulTimer); 157 extern void TimerDisable(unsigned long ulBase, unsigned long ulTimer); 158 extern void TimerConfigure(unsigned long ulBase, unsigned long ulConfig); 159 extern void TimerControlLevel(unsigned long ulBase, unsigned long ulTimer, 160 tBoolean bInvert); 161 extern void TimerControlTrigger(unsigned long ulBase, unsigned long ulTimer, 162 tBoolean bEnable); 163 extern void TimerControlEvent(unsigned long ulBase, unsigned long ulTimer, 164 unsigned long ulEvent); 165 extern void TimerControlStall(unsigned long ulBase, unsigned long ulTimer, 166 tBoolean bStall); 167 extern void TimerControlWaitOnTrigger(unsigned long ulBase, 168 unsigned long ulTimer, 169 tBoolean bWait); 170 extern void TimerRTCEnable(unsigned long ulBase); 171 extern void TimerRTCDisable(unsigned long ulBase); 172 extern void TimerPrescaleSet(unsigned long ulBase, unsigned long ulTimer, 173 unsigned long ulValue); 174 extern unsigned long TimerPrescaleGet(unsigned long ulBase, 175 unsigned long ulTimer); 176 extern void TimerPrescaleMatchSet(unsigned long ulBase, unsigned long ulTimer, 177 unsigned long ulValue); 178 extern unsigned long TimerPrescaleMatchGet(unsigned long ulBase, 179 unsigned long ulTimer); 180 extern void TimerLoadSet(unsigned long ulBase, unsigned long ulTimer, 181 unsigned long ulValue); 182 extern unsigned long TimerLoadGet(unsigned long ulBase, unsigned long ulTimer); 183 extern void TimerLoadSet64(unsigned long ulBase, unsigned long long ullValue); 184 extern unsigned long long TimerLoadGet64(unsigned long ulBase); 185 extern unsigned long TimerValueGet(unsigned long ulBase, 186 unsigned long ulTimer); 187 extern unsigned long long TimerValueGet64(unsigned long ulBase); 188 extern void TimerMatchSet(unsigned long ulBase, unsigned long ulTimer, 189 unsigned long ulValue); 190 extern unsigned long TimerMatchGet(unsigned long ulBase, 191 unsigned long ulTimer); 192 extern void TimerMatchSet64(unsigned long ulBase, unsigned long long ullValue); 193 extern unsigned long long TimerMatchGet64(unsigned long ulBase); 194 extern void TimerIntRegister(unsigned long ulBase, unsigned long ulTimer, 195 void (*pfnHandler)(void)); 196 extern void TimerIntUnregister(unsigned long ulBase, unsigned long ulTimer); 197 extern void TimerIntEnable(unsigned long ulBase, unsigned long ulIntFlags); 198 extern void TimerIntDisable(unsigned long ulBase, unsigned long ulIntFlags); 199 extern unsigned long TimerIntStatus(unsigned long ulBase, tBoolean bMasked); 200 extern void TimerIntClear(unsigned long ulBase, unsigned long ulIntFlags); 201 extern void TimerSynchronize(unsigned long ulBase, unsigned long ulTimers); 202 203 //***************************************************************************** 204 // 205 // TimerQuiesce() has been deprecated. SysCtlPeripheralReset() should be used 206 // instead to return the timer to its reset state. 207 // 208 //***************************************************************************** 209 #ifndef DEPRECATED 210 extern void TimerQuiesce(unsigned long ulBase); 211 #endif 212 213 //***************************************************************************** 214 // 215 // These values for TimerConfigure have been deprecated. 216 // 217 //***************************************************************************** 218 #ifndef DEPRECATED 219 #define TIMER_CFG_32_BIT_OS 0x00000021 // 32-bit one-shot timer 220 #define TIMER_CFG_32_BIT_OS_UP 0x00000031 // 32-bit one-shot up-count timer 221 #define TIMER_CFG_32_BIT_PER 0x00000022 // 32-bit periodic timer 222 #define TIMER_CFG_32_BIT_PER_UP 0x00000032 // 32-bit periodic up-count timer 223 #define TIMER_CFG_32_RTC 0x01000000 // 32-bit RTC timer 224 #define TIMER_CFG_16_BIT_PAIR 0x04000000 // Two 16-bit timers 225 #endif 226 227 //***************************************************************************** 228 // 229 // Mark the end of the C bindings section for C++ compilers. 230 // 231 //***************************************************************************** 232 #ifdef __cplusplus 233 } 234 #endif 235 236 #endif // __TIMER_H__ 237