xref: /btstack/port/msp432p401lp-cc256x/ti/devices/msp432p4xx/driverlib/timer32.h (revision 5fd0122a3e19d95e11e1f3eb8a08a2b2acb2557e)
1*5fd0122aSMatthias Ringwald /* --COPYRIGHT--,BSD
2*5fd0122aSMatthias Ringwald  * Copyright (c) 2017, Texas Instruments Incorporated
3*5fd0122aSMatthias Ringwald  * All rights reserved.
4*5fd0122aSMatthias Ringwald  *
5*5fd0122aSMatthias Ringwald  * Redistribution and use in source and binary forms, with or without
6*5fd0122aSMatthias Ringwald  * modification, are permitted provided that the following conditions
7*5fd0122aSMatthias Ringwald  * are met:
8*5fd0122aSMatthias Ringwald  *
9*5fd0122aSMatthias Ringwald  * *  Redistributions of source code must retain the above copyright
10*5fd0122aSMatthias Ringwald  *    notice, this list of conditions and the following disclaimer.
11*5fd0122aSMatthias Ringwald  *
12*5fd0122aSMatthias Ringwald  * *  Redistributions in binary form must reproduce the above copyright
13*5fd0122aSMatthias Ringwald  *    notice, this list of conditions and the following disclaimer in the
14*5fd0122aSMatthias Ringwald  *    documentation and/or other materials provided with the distribution.
15*5fd0122aSMatthias Ringwald  *
16*5fd0122aSMatthias Ringwald  * *  Neither the name of Texas Instruments Incorporated nor the names of
17*5fd0122aSMatthias Ringwald  *    its contributors may be used to endorse or promote products derived
18*5fd0122aSMatthias Ringwald  *    from this software without specific prior written permission.
19*5fd0122aSMatthias Ringwald  *
20*5fd0122aSMatthias Ringwald  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21*5fd0122aSMatthias Ringwald  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22*5fd0122aSMatthias Ringwald  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23*5fd0122aSMatthias Ringwald  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24*5fd0122aSMatthias Ringwald  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25*5fd0122aSMatthias Ringwald  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26*5fd0122aSMatthias Ringwald  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27*5fd0122aSMatthias Ringwald  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28*5fd0122aSMatthias Ringwald  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29*5fd0122aSMatthias Ringwald  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30*5fd0122aSMatthias Ringwald  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31*5fd0122aSMatthias Ringwald  * --/COPYRIGHT--*/
32*5fd0122aSMatthias Ringwald #ifndef TIMER32_H_
33*5fd0122aSMatthias Ringwald #define TIMER32_H_
34*5fd0122aSMatthias Ringwald 
35*5fd0122aSMatthias Ringwald //*****************************************************************************
36*5fd0122aSMatthias Ringwald //
37*5fd0122aSMatthias Ringwald //! \addtogroup timer32_api
38*5fd0122aSMatthias Ringwald //! @{
39*5fd0122aSMatthias Ringwald //
40*5fd0122aSMatthias Ringwald //*****************************************************************************
41*5fd0122aSMatthias Ringwald 
42*5fd0122aSMatthias Ringwald //*****************************************************************************
43*5fd0122aSMatthias Ringwald //
44*5fd0122aSMatthias Ringwald // If building with a C++ compiler, make all of the definitions in this header
45*5fd0122aSMatthias Ringwald // have a C binding.
46*5fd0122aSMatthias Ringwald //
47*5fd0122aSMatthias Ringwald //*****************************************************************************
48*5fd0122aSMatthias Ringwald #ifdef __cplusplus
49*5fd0122aSMatthias Ringwald extern "C"
50*5fd0122aSMatthias Ringwald {
51*5fd0122aSMatthias Ringwald #endif
52*5fd0122aSMatthias Ringwald #include <stdint.h>
53*5fd0122aSMatthias Ringwald #include <stdbool.h>
54*5fd0122aSMatthias Ringwald #include <ti/devices/msp432p4xx/inc/msp.h>
55*5fd0122aSMatthias Ringwald 
56*5fd0122aSMatthias Ringwald //*****************************************************************************
57*5fd0122aSMatthias Ringwald //
58*5fd0122aSMatthias Ringwald // Control specific variables
59*5fd0122aSMatthias Ringwald //
60*5fd0122aSMatthias Ringwald //*****************************************************************************
61*5fd0122aSMatthias Ringwald #define TIMER32_CMSIS(x) ((Timer32_Type *) x)
62*5fd0122aSMatthias Ringwald 
63*5fd0122aSMatthias Ringwald #define TIMER_OFFSET    0x020
64*5fd0122aSMatthias Ringwald 
65*5fd0122aSMatthias Ringwald #define TIMER32_0_BASE   (uint32_t)TIMER32_1
66*5fd0122aSMatthias Ringwald #define TIMER32_1_BASE   (uint32_t)TIMER32_2
67*5fd0122aSMatthias Ringwald 
68*5fd0122aSMatthias Ringwald #define TIMER32_0_INTERRUPT         INT_T32_INT1
69*5fd0122aSMatthias Ringwald #define TIMER32_1_INTERRUPT         INT_T32_INT2
70*5fd0122aSMatthias Ringwald #define TIMER32_COMBINED_INTERRUPT  INT_T32_INTC
71*5fd0122aSMatthias Ringwald 
72*5fd0122aSMatthias Ringwald #define TIMER32_16BIT            0x00
73*5fd0122aSMatthias Ringwald #define TIMER32_32BIT            0x01
74*5fd0122aSMatthias Ringwald 
75*5fd0122aSMatthias Ringwald #define TIMER32_PRESCALER_1      0x00
76*5fd0122aSMatthias Ringwald #define TIMER32_PRESCALER_16     0x04
77*5fd0122aSMatthias Ringwald #define TIMER32_PRESCALER_256    0x08
78*5fd0122aSMatthias Ringwald 
79*5fd0122aSMatthias Ringwald #define TIMER32_FREE_RUN_MODE   0x00
80*5fd0122aSMatthias Ringwald #define TIMER32_PERIODIC_MODE   0x01
81*5fd0122aSMatthias Ringwald 
82*5fd0122aSMatthias Ringwald //*****************************************************************************
83*5fd0122aSMatthias Ringwald //
84*5fd0122aSMatthias Ringwald // API Function prototypes
85*5fd0122aSMatthias Ringwald //
86*5fd0122aSMatthias Ringwald //*****************************************************************************
87*5fd0122aSMatthias Ringwald 
88*5fd0122aSMatthias Ringwald //*****************************************************************************
89*5fd0122aSMatthias Ringwald //
90*5fd0122aSMatthias Ringwald //! Initializes the Timer32 module
91*5fd0122aSMatthias Ringwald //!
92*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer32 module.
93*5fd0122aSMatthias Ringwald //! Valid parameters must be one of the following values:
94*5fd0122aSMatthias Ringwald //!         - \b TIMER32_0_BASE
95*5fd0122aSMatthias Ringwald //!         - \b TIMER32_1_BASE
96*5fd0122aSMatthias Ringwald //!
97*5fd0122aSMatthias Ringwald //! \param preScaler is the prescaler (or divider) to apply to the clock
98*5fd0122aSMatthias Ringwald //! source given to the Timer32 module.
99*5fd0122aSMatthias Ringwald //!         Valid values are
100*5fd0122aSMatthias Ringwald //!         - \b TIMER32_PRESCALER_1 [DEFAULT]
101*5fd0122aSMatthias Ringwald //!         - \b TIMER32_PRESCALER_16
102*5fd0122aSMatthias Ringwald //!         - \b TIMER32_PRESCALER_256
103*5fd0122aSMatthias Ringwald //! \param resolution is the bit resolution of the Timer32 module.
104*5fd0122aSMatthias Ringwald //!         Valid values are
105*5fd0122aSMatthias Ringwald //!         - \b TIMER32_16BIT [DEFAULT]
106*5fd0122aSMatthias Ringwald //!         - \b TIMER32_32BIT
107*5fd0122aSMatthias Ringwald //! \param mode selects between free run and periodic mode. In free run
108*5fd0122aSMatthias Ringwald //! mode, the value of the timer is reset to UINT16_MAX (for 16-bit mode) or
109*5fd0122aSMatthias Ringwald //! UINT32_MAX (for 16-bit mode) when the timer reaches zero. In periodic mode,
110*5fd0122aSMatthias Ringwald //! the timer is reset to the value set by the Timer32_setCount function.
111*5fd0122aSMatthias Ringwald //!         Valid values are
112*5fd0122aSMatthias Ringwald //!         - \b TIMER32_FREE_RUN_MODE [DEFAULT]
113*5fd0122aSMatthias Ringwald //!         - \b TIMER32_PERIODIC_MODE
114*5fd0122aSMatthias Ringwald //!
115*5fd0122aSMatthias Ringwald //!
116*5fd0122aSMatthias Ringwald //! \return None.
117*5fd0122aSMatthias Ringwald //
118*5fd0122aSMatthias Ringwald //*****************************************************************************
119*5fd0122aSMatthias Ringwald extern void Timer32_initModule(uint32_t timer, uint32_t preScaler,
120*5fd0122aSMatthias Ringwald         uint32_t resolution, uint32_t mode);
121*5fd0122aSMatthias Ringwald 
122*5fd0122aSMatthias Ringwald //*****************************************************************************
123*5fd0122aSMatthias Ringwald //
124*5fd0122aSMatthias Ringwald //! Sets the count of the timer and resets the current value to the value
125*5fd0122aSMatthias Ringwald //! passed. This value is set on the next rising edge of the clock provided to
126*5fd0122aSMatthias Ringwald //! the timer module
127*5fd0122aSMatthias Ringwald //!
128*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer32 module.
129*5fd0122aSMatthias Ringwald //! Valid parameters must be one of the following values:
130*5fd0122aSMatthias Ringwald //!         - \b TIMER32_0_BASE
131*5fd0122aSMatthias Ringwald //!         - \b TIMER32_1_BASE
132*5fd0122aSMatthias Ringwald //! \param count Value of the timer to set. Note that
133*5fd0122aSMatthias Ringwald //! if the timer is in 16-bit mode and a value is passed in that exceeds
134*5fd0122aSMatthias Ringwald //! UINT16_MAX, the value will be truncated to UINT16_MAX.
135*5fd0122aSMatthias Ringwald //!
136*5fd0122aSMatthias Ringwald //! Also note that if the timer is operating in periodic mode, the value passed
137*5fd0122aSMatthias Ringwald //! into this function will represent the new period of the timer (the value
138*5fd0122aSMatthias Ringwald //! which is reloaded into the timer each time it reaches a zero value).
139*5fd0122aSMatthias Ringwald //!
140*5fd0122aSMatthias Ringwald //! \return None
141*5fd0122aSMatthias Ringwald //
142*5fd0122aSMatthias Ringwald //*****************************************************************************
143*5fd0122aSMatthias Ringwald extern void Timer32_setCount(uint32_t timer, uint32_t count);
144*5fd0122aSMatthias Ringwald 
145*5fd0122aSMatthias Ringwald //*****************************************************************************
146*5fd0122aSMatthias Ringwald //
147*5fd0122aSMatthias Ringwald //! Sets the count of the timer without resetting the current value. When the
148*5fd0122aSMatthias Ringwald //! current value of the timer reaches zero, the value passed into this function
149*5fd0122aSMatthias Ringwald //! will be set as the new count value.
150*5fd0122aSMatthias Ringwald //!
151*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer32 module.
152*5fd0122aSMatthias Ringwald //! Valid parameters must be one of the following values:
153*5fd0122aSMatthias Ringwald //!         - \b TIMER32_0_BASE
154*5fd0122aSMatthias Ringwald //!         - \b TIMER32_1_BASE
155*5fd0122aSMatthias Ringwald //! \param count Value of the timer to set in the background. Note that
156*5fd0122aSMatthias Ringwald //! if the timer is in 16-bit mode and a value is passed in that exceeds
157*5fd0122aSMatthias Ringwald //! UINT16_MAX, the value will be truncated to UINT16_MAX.
158*5fd0122aSMatthias Ringwald //!
159*5fd0122aSMatthias Ringwald //! Also note that if the timer is operating in periodic mode, the value passed
160*5fd0122aSMatthias Ringwald //! into this function will represent the new period of the timer (the value
161*5fd0122aSMatthias Ringwald //! which is reloaded into the timer each time it reaches a zero value).
162*5fd0122aSMatthias Ringwald //!
163*5fd0122aSMatthias Ringwald //! \return None
164*5fd0122aSMatthias Ringwald //
165*5fd0122aSMatthias Ringwald //*****************************************************************************
166*5fd0122aSMatthias Ringwald extern void Timer32_setCountInBackground(uint32_t timer, uint32_t count);
167*5fd0122aSMatthias Ringwald 
168*5fd0122aSMatthias Ringwald //*****************************************************************************
169*5fd0122aSMatthias Ringwald //
170*5fd0122aSMatthias Ringwald //! Returns the current value of the timer.
171*5fd0122aSMatthias Ringwald //!
172*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer32 module.
173*5fd0122aSMatthias Ringwald //! Valid parameters must be one of the following values:
174*5fd0122aSMatthias Ringwald //!         - \b TIMER32_0_BASE
175*5fd0122aSMatthias Ringwald //!         - \b TIMER32_1_BASE
176*5fd0122aSMatthias Ringwald //!
177*5fd0122aSMatthias Ringwald //! \return The current count of the timer.
178*5fd0122aSMatthias Ringwald //
179*5fd0122aSMatthias Ringwald //*****************************************************************************
180*5fd0122aSMatthias Ringwald extern uint32_t Timer32_getValue(uint32_t timer);
181*5fd0122aSMatthias Ringwald 
182*5fd0122aSMatthias Ringwald //*****************************************************************************
183*5fd0122aSMatthias Ringwald //
184*5fd0122aSMatthias Ringwald //! Starts the timer. The Timer32_initModule function should be called (in
185*5fd0122aSMatthias Ringwald //! conjunction with Timer32_setCount if periodic mode is desired) prior to
186*5fd0122aSMatthias Ringwald //  starting the timer.
187*5fd0122aSMatthias Ringwald //!
188*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer32 module.
189*5fd0122aSMatthias Ringwald //! Valid parameters must be one of the following values:
190*5fd0122aSMatthias Ringwald //!         - \b TIMER32_0_BASE
191*5fd0122aSMatthias Ringwald //!         - \b TIMER32_1_BASE
192*5fd0122aSMatthias Ringwald //!
193*5fd0122aSMatthias Ringwald //! \param oneShot sets whether the Timer32 module operates in one shot
194*5fd0122aSMatthias Ringwald //!  or continuous mode. In one shot mode, the timer will halt when a zero is
195*5fd0122aSMatthias Ringwald //!  reached and stay halted until either:
196*5fd0122aSMatthias Ringwald //!         - The user calls the Timer32PeriodSet function
197*5fd0122aSMatthias Ringwald //!         - The Timer32_initModule is called to reinitialize the timer with one-shot
198*5fd0122aSMatthias Ringwald //!             mode disabled.
199*5fd0122aSMatthias Ringwald //!
200*5fd0122aSMatthias Ringwald //! A true value will cause the timer to operate in one shot mode while a false
201*5fd0122aSMatthias Ringwald //! value will cause the timer to operate in continuous mode
202*5fd0122aSMatthias Ringwald //!
203*5fd0122aSMatthias Ringwald //! \return None
204*5fd0122aSMatthias Ringwald //
205*5fd0122aSMatthias Ringwald //*****************************************************************************
206*5fd0122aSMatthias Ringwald extern void Timer32_startTimer(uint32_t timer, bool oneShot);
207*5fd0122aSMatthias Ringwald 
208*5fd0122aSMatthias Ringwald //*****************************************************************************
209*5fd0122aSMatthias Ringwald //
210*5fd0122aSMatthias Ringwald //! Halts the timer. Current count and setting values are preserved.
211*5fd0122aSMatthias Ringwald //!
212*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer32 module.
213*5fd0122aSMatthias Ringwald //! Valid parameters must be one of the following values:
214*5fd0122aSMatthias Ringwald //!         - \b TIMER32_0_BASE
215*5fd0122aSMatthias Ringwald //!         - \b TIMER32_1_BASE
216*5fd0122aSMatthias Ringwald //!
217*5fd0122aSMatthias Ringwald //! \return None
218*5fd0122aSMatthias Ringwald //
219*5fd0122aSMatthias Ringwald //*****************************************************************************
220*5fd0122aSMatthias Ringwald extern void Timer32_haltTimer(uint32_t timer);
221*5fd0122aSMatthias Ringwald 
222*5fd0122aSMatthias Ringwald //*****************************************************************************
223*5fd0122aSMatthias Ringwald //
224*5fd0122aSMatthias Ringwald //! Enables a Timer32 interrupt source.
225*5fd0122aSMatthias Ringwald //!
226*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer32 module.
227*5fd0122aSMatthias Ringwald //! Valid parameters must be one of the following values:
228*5fd0122aSMatthias Ringwald //!         - \b TIMER32_0_BASE
229*5fd0122aSMatthias Ringwald //!         - \b TIMER32_1_BASE
230*5fd0122aSMatthias Ringwald //!
231*5fd0122aSMatthias Ringwald //! Enables the indicated Timer32 interrupt source.
232*5fd0122aSMatthias Ringwald //!
233*5fd0122aSMatthias Ringwald //! \return None.
234*5fd0122aSMatthias Ringwald //
235*5fd0122aSMatthias Ringwald //*****************************************************************************
236*5fd0122aSMatthias Ringwald extern void Timer32_enableInterrupt(uint32_t timer);
237*5fd0122aSMatthias Ringwald 
238*5fd0122aSMatthias Ringwald //*****************************************************************************
239*5fd0122aSMatthias Ringwald //
240*5fd0122aSMatthias Ringwald //! Disables a Timer32 interrupt source.
241*5fd0122aSMatthias Ringwald //!
242*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer32 module.
243*5fd0122aSMatthias Ringwald //! Valid parameters must be one of the following values:
244*5fd0122aSMatthias Ringwald //!         - \b TIMER32_0_BASE
245*5fd0122aSMatthias Ringwald //!         - \b TIMER32_1_BASE
246*5fd0122aSMatthias Ringwald //!
247*5fd0122aSMatthias Ringwald //! Disables the indicated Timer32 interrupt source.
248*5fd0122aSMatthias Ringwald //!
249*5fd0122aSMatthias Ringwald //! \return None.
250*5fd0122aSMatthias Ringwald //
251*5fd0122aSMatthias Ringwald //*****************************************************************************
252*5fd0122aSMatthias Ringwald extern void Timer32_disableInterrupt(uint32_t timer);
253*5fd0122aSMatthias Ringwald 
254*5fd0122aSMatthias Ringwald //*****************************************************************************
255*5fd0122aSMatthias Ringwald //
256*5fd0122aSMatthias Ringwald //! Clears Timer32 interrupt source.
257*5fd0122aSMatthias Ringwald //!
258*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer32 module.
259*5fd0122aSMatthias Ringwald //! Valid parameters must be one of the following values:
260*5fd0122aSMatthias Ringwald //!         - \b TIMER32_0_BASE
261*5fd0122aSMatthias Ringwald //!         - \b TIMER32_1_BASE
262*5fd0122aSMatthias Ringwald //!
263*5fd0122aSMatthias Ringwald //! The Timer32 interrupt source is cleared, so that it no longer asserts.
264*5fd0122aSMatthias Ringwald //!
265*5fd0122aSMatthias Ringwald //! \return None.
266*5fd0122aSMatthias Ringwald //
267*5fd0122aSMatthias Ringwald //*****************************************************************************
268*5fd0122aSMatthias Ringwald extern void Timer32_clearInterruptFlag(uint32_t timer);
269*5fd0122aSMatthias Ringwald 
270*5fd0122aSMatthias Ringwald //*****************************************************************************
271*5fd0122aSMatthias Ringwald //
272*5fd0122aSMatthias Ringwald //! Gets the current Timer32 interrupt status.
273*5fd0122aSMatthias Ringwald //!
274*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer32 module.
275*5fd0122aSMatthias Ringwald //! Valid parameters must be one of the following values:
276*5fd0122aSMatthias Ringwald //!         - \b TIMER32_0_BASE
277*5fd0122aSMatthias Ringwald //!         - \b TIMER32_1_BASE
278*5fd0122aSMatthias Ringwald //!
279*5fd0122aSMatthias Ringwald //! This returns the interrupt status for the Timer32 module. A positive value
280*5fd0122aSMatthias Ringwald //! will indicate that an interrupt is pending while a zero value will indicate
281*5fd0122aSMatthias Ringwald //! that no interrupt is pending.
282*5fd0122aSMatthias Ringwald //!
283*5fd0122aSMatthias Ringwald //! \return The current interrupt status
284*5fd0122aSMatthias Ringwald //
285*5fd0122aSMatthias Ringwald //*****************************************************************************
286*5fd0122aSMatthias Ringwald extern uint32_t Timer32_getInterruptStatus(uint32_t timer);
287*5fd0122aSMatthias Ringwald 
288*5fd0122aSMatthias Ringwald //*****************************************************************************
289*5fd0122aSMatthias Ringwald //
290*5fd0122aSMatthias Ringwald //! Registers an interrupt handler for Timer32 interrupts.
291*5fd0122aSMatthias Ringwald //!
292*5fd0122aSMatthias Ringwald //! \param timerInterrupt is the specific interrupt to register. For the
293*5fd0122aSMatthias Ringwald //! Timer32 module, there are a total of three different interrupts: one
294*5fd0122aSMatthias Ringwald //! interrupt for each two Timer32 modules, and a "combined" interrupt which
295*5fd0122aSMatthias Ringwald //! is a logical OR of each individual Timer32 interrupt.
296*5fd0122aSMatthias Ringwald //!         - \b TIMER32_0_INTERRUPT
297*5fd0122aSMatthias Ringwald //!         - \b TIMER32_1_INTERRUPT
298*5fd0122aSMatthias Ringwald //!         - \b TIMER32_COMBINED_INTERRUPT
299*5fd0122aSMatthias Ringwald //!
300*5fd0122aSMatthias Ringwald //! \param intHandler is a pointer to the function to be called when the
301*5fd0122aSMatthias Ringwald //! Timer32 interrupt occurs.
302*5fd0122aSMatthias Ringwald //!
303*5fd0122aSMatthias Ringwald //! This function registers the handler to be called when an Timer32
304*5fd0122aSMatthias Ringwald //! interrupt occurs. This function enables the global interrupt in the
305*5fd0122aSMatthias Ringwald //! interrupt controller; specific Timer32 interrupts must be enabled
306*5fd0122aSMatthias Ringwald //! via Timer32_enableInterrupt().  It is the interrupt handler's
307*5fd0122aSMatthias Ringwald //! responsibility to clear the interrupt source
308*5fd0122aSMatthias Ringwald //! via Timer32_clearInterruptFlag().
309*5fd0122aSMatthias Ringwald //!
310*5fd0122aSMatthias Ringwald //! \return None.
311*5fd0122aSMatthias Ringwald //
312*5fd0122aSMatthias Ringwald //*****************************************************************************
313*5fd0122aSMatthias Ringwald extern void Timer32_registerInterrupt(uint32_t timerInterrupt,
314*5fd0122aSMatthias Ringwald         void (*intHandler)(void));
315*5fd0122aSMatthias Ringwald 
316*5fd0122aSMatthias Ringwald //*****************************************************************************
317*5fd0122aSMatthias Ringwald //
318*5fd0122aSMatthias Ringwald //! Unregisters the interrupt handler for the Timer32 interrupt.
319*5fd0122aSMatthias Ringwald //!
320*5fd0122aSMatthias Ringwald //! \param timerInterrupt is the specific interrupt to register. For the
321*5fd0122aSMatthias Ringwald //! Timer32 module, there are a total of three different interrupts: one
322*5fd0122aSMatthias Ringwald //! interrupt for each two Timer32 modules, and a "combined" interrupt which
323*5fd0122aSMatthias Ringwald //! is a logical OR of each individual Timer32 interrupt.
324*5fd0122aSMatthias Ringwald //!         - \b TIMER32_0_INTERRUPT
325*5fd0122aSMatthias Ringwald //!         - \b TIMER32_1_INTERRUPT
326*5fd0122aSMatthias Ringwald //!         - \b TIMER32_COMBINED_INTERRUPT
327*5fd0122aSMatthias Ringwald //!
328*5fd0122aSMatthias Ringwald //! This function unregisters the handler to be called when a Timer32
329*5fd0122aSMatthias Ringwald //! interrupt occurs.  This function also masks off the interrupt in the
330*5fd0122aSMatthias Ringwald //! interrupt controller so that the interrupt handler no longer is called.
331*5fd0122aSMatthias Ringwald //!
332*5fd0122aSMatthias Ringwald //! \sa Interrupt_registerInterrupt() for important information about
333*5fd0122aSMatthias Ringwald //! registering interrupt handlers.
334*5fd0122aSMatthias Ringwald //!
335*5fd0122aSMatthias Ringwald //! \return None.
336*5fd0122aSMatthias Ringwald //
337*5fd0122aSMatthias Ringwald //*****************************************************************************
338*5fd0122aSMatthias Ringwald extern void Timer32_unregisterInterrupt(uint32_t timerInterrupt);
339*5fd0122aSMatthias Ringwald 
340*5fd0122aSMatthias Ringwald //*****************************************************************************
341*5fd0122aSMatthias Ringwald //
342*5fd0122aSMatthias Ringwald // Mark the end of the C bindings section for C++ compilers.
343*5fd0122aSMatthias Ringwald //
344*5fd0122aSMatthias Ringwald //*****************************************************************************
345*5fd0122aSMatthias Ringwald #ifdef __cplusplus
346*5fd0122aSMatthias Ringwald }
347*5fd0122aSMatthias Ringwald #endif
348*5fd0122aSMatthias Ringwald 
349*5fd0122aSMatthias Ringwald //*****************************************************************************
350*5fd0122aSMatthias Ringwald //
351*5fd0122aSMatthias Ringwald // Close the Doxygen group.
352*5fd0122aSMatthias Ringwald //! @}
353*5fd0122aSMatthias Ringwald //
354*5fd0122aSMatthias Ringwald //*****************************************************************************
355*5fd0122aSMatthias Ringwald 
356*5fd0122aSMatthias Ringwald #endif /* TIMER32_H_ */
357