xref: /btstack/port/msp432p401lp-cc256x/ti/devices/msp432p4xx/driverlib/systick.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 __SYSTICK_H__
33*5fd0122aSMatthias Ringwald #define __SYSTICK_H__
34*5fd0122aSMatthias Ringwald 
35*5fd0122aSMatthias Ringwald //*****************************************************************************
36*5fd0122aSMatthias Ringwald //
37*5fd0122aSMatthias Ringwald //! \addtogroup systick_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 
54*5fd0122aSMatthias Ringwald //*****************************************************************************
55*5fd0122aSMatthias Ringwald //
56*5fd0122aSMatthias Ringwald // Prototypes for the APIs.
57*5fd0122aSMatthias Ringwald //
58*5fd0122aSMatthias Ringwald //*****************************************************************************
59*5fd0122aSMatthias Ringwald 
60*5fd0122aSMatthias Ringwald //*****************************************************************************
61*5fd0122aSMatthias Ringwald //
62*5fd0122aSMatthias Ringwald //! Enables the SysTick counter.
63*5fd0122aSMatthias Ringwald //!
64*5fd0122aSMatthias Ringwald //! This function starts the SysTick counter.  If an interrupt handler has been
65*5fd0122aSMatthias Ringwald //! registered, it is called when the SysTick counter rolls over.
66*5fd0122aSMatthias Ringwald //!
67*5fd0122aSMatthias Ringwald //! \note Calling this function causes the SysTick counter to (re)commence
68*5fd0122aSMatthias Ringwald //! counting from its current value.  The counter is not automatically reloaded
69*5fd0122aSMatthias Ringwald //! with the period as specified in a previous call to SysTick_setPeriod().  If
70*5fd0122aSMatthias Ringwald //! an immediate reload is required, the \b NVIC_ST_CURRENT register must be
71*5fd0122aSMatthias Ringwald //! written to force the reload.  Any write to this register clears the SysTick
72*5fd0122aSMatthias Ringwald //! counter to 0 and causes a reload with the supplied period on the next
73*5fd0122aSMatthias Ringwald //! clock.
74*5fd0122aSMatthias Ringwald //!
75*5fd0122aSMatthias Ringwald //! \return None.
76*5fd0122aSMatthias Ringwald //
77*5fd0122aSMatthias Ringwald //*****************************************************************************
78*5fd0122aSMatthias Ringwald extern void SysTick_enableModule(void);
79*5fd0122aSMatthias Ringwald 
80*5fd0122aSMatthias Ringwald //*****************************************************************************
81*5fd0122aSMatthias Ringwald //
82*5fd0122aSMatthias Ringwald //! Disables the SysTick counter.
83*5fd0122aSMatthias Ringwald //!
84*5fd0122aSMatthias Ringwald //! This function stops the SysTick counter.  If an interrupt handler has been
85*5fd0122aSMatthias Ringwald //! registered, it is not called until SysTick is restarted.
86*5fd0122aSMatthias Ringwald //!
87*5fd0122aSMatthias Ringwald //! \return None.
88*5fd0122aSMatthias Ringwald //
89*5fd0122aSMatthias Ringwald //*****************************************************************************
90*5fd0122aSMatthias Ringwald extern void SysTick_disableModule(void);
91*5fd0122aSMatthias Ringwald 
92*5fd0122aSMatthias Ringwald //*****************************************************************************
93*5fd0122aSMatthias Ringwald //
94*5fd0122aSMatthias Ringwald //! Registers an interrupt handler for the SysTick interrupt.
95*5fd0122aSMatthias Ringwald //!
96*5fd0122aSMatthias Ringwald //! \param intHandler is a pointer to the function to be called when the
97*5fd0122aSMatthias Ringwald //! SysTick interrupt occurs.
98*5fd0122aSMatthias Ringwald //!
99*5fd0122aSMatthias Ringwald //! This function registers the handler to be called when a SysTick interrupt
100*5fd0122aSMatthias Ringwald //! occurs.
101*5fd0122aSMatthias Ringwald //!
102*5fd0122aSMatthias Ringwald //! \sa Interrupt_registerInterrupt() for important information about
103*5fd0122aSMatthias Ringwald //! registering interrupt handlers.
104*5fd0122aSMatthias Ringwald //!
105*5fd0122aSMatthias Ringwald //! \return None.
106*5fd0122aSMatthias Ringwald //
107*5fd0122aSMatthias Ringwald //*****************************************************************************
108*5fd0122aSMatthias Ringwald extern void SysTick_registerInterrupt(void (*intHandler)(void));
109*5fd0122aSMatthias Ringwald 
110*5fd0122aSMatthias Ringwald //*****************************************************************************
111*5fd0122aSMatthias Ringwald //
112*5fd0122aSMatthias Ringwald //! Unregisters the interrupt handler for the SysTick interrupt.
113*5fd0122aSMatthias Ringwald //!
114*5fd0122aSMatthias Ringwald //! This function unregisters the handler to be called when a SysTick interrupt
115*5fd0122aSMatthias Ringwald //! occurs.
116*5fd0122aSMatthias Ringwald //!
117*5fd0122aSMatthias Ringwald //! \sa Interrupt_registerInterrupt() for important information about
118*5fd0122aSMatthias Ringwald //! registering interrupt handlers.
119*5fd0122aSMatthias Ringwald //!
120*5fd0122aSMatthias Ringwald //! \return None.
121*5fd0122aSMatthias Ringwald //
122*5fd0122aSMatthias Ringwald //*****************************************************************************
123*5fd0122aSMatthias Ringwald extern void SysTick_unregisterInterrupt(void);
124*5fd0122aSMatthias Ringwald 
125*5fd0122aSMatthias Ringwald //*****************************************************************************
126*5fd0122aSMatthias Ringwald //
127*5fd0122aSMatthias Ringwald //! Enables the SysTick interrupt.
128*5fd0122aSMatthias Ringwald //!
129*5fd0122aSMatthias Ringwald //! This function enables the SysTick interrupt, allowing it to be
130*5fd0122aSMatthias Ringwald //! reflected to the processor.
131*5fd0122aSMatthias Ringwald //!
132*5fd0122aSMatthias Ringwald //! \note The SysTick interrupt handler is not required to clear the SysTick
133*5fd0122aSMatthias Ringwald //! interrupt source because it is cleared automatically by the NVIC when the
134*5fd0122aSMatthias Ringwald //! interrupt handler is called.
135*5fd0122aSMatthias Ringwald //!
136*5fd0122aSMatthias Ringwald //! \return None.
137*5fd0122aSMatthias Ringwald //
138*5fd0122aSMatthias Ringwald //*****************************************************************************
139*5fd0122aSMatthias Ringwald extern void SysTick_enableInterrupt(void);
140*5fd0122aSMatthias Ringwald 
141*5fd0122aSMatthias Ringwald //*****************************************************************************
142*5fd0122aSMatthias Ringwald //
143*5fd0122aSMatthias Ringwald //! Disables the SysTick interrupt.
144*5fd0122aSMatthias Ringwald //!
145*5fd0122aSMatthias Ringwald //! This function disables the SysTick interrupt, preventing it from being
146*5fd0122aSMatthias Ringwald //! reflected to the processor.
147*5fd0122aSMatthias Ringwald //!
148*5fd0122aSMatthias Ringwald //! \return None.
149*5fd0122aSMatthias Ringwald //
150*5fd0122aSMatthias Ringwald //*****************************************************************************
151*5fd0122aSMatthias Ringwald extern void SysTick_disableInterrupt(void);
152*5fd0122aSMatthias Ringwald 
153*5fd0122aSMatthias Ringwald //*****************************************************************************
154*5fd0122aSMatthias Ringwald //
155*5fd0122aSMatthias Ringwald //! Sets the period of the SysTick counter.
156*5fd0122aSMatthias Ringwald //!
157*5fd0122aSMatthias Ringwald //! \param period is the number of clock ticks in each period of the SysTick
158*5fd0122aSMatthias Ringwald //! counter and must be between 1 and 16,777,216, inclusive.
159*5fd0122aSMatthias Ringwald //!
160*5fd0122aSMatthias Ringwald //! This function sets the rate at which the SysTick counter wraps, which
161*5fd0122aSMatthias Ringwald //! equates to the number of processor clocks between interrupts.
162*5fd0122aSMatthias Ringwald //!
163*5fd0122aSMatthias Ringwald //! \note Calling this function does not cause the SysTick counter to reload
164*5fd0122aSMatthias Ringwald //! immediately.  If an immediate reload is required, the \b NVIC_ST_CURRENT
165*5fd0122aSMatthias Ringwald //! register must be written.  Any write to this register clears the SysTick
166*5fd0122aSMatthias Ringwald //! counter to 0 and causes a reload with the \e period supplied here on
167*5fd0122aSMatthias Ringwald //! the next clock after SysTick is enabled.
168*5fd0122aSMatthias Ringwald //!
169*5fd0122aSMatthias Ringwald //! \return None.
170*5fd0122aSMatthias Ringwald //
171*5fd0122aSMatthias Ringwald //*****************************************************************************
172*5fd0122aSMatthias Ringwald extern void SysTick_setPeriod(uint32_t period);
173*5fd0122aSMatthias Ringwald 
174*5fd0122aSMatthias Ringwald //*****************************************************************************
175*5fd0122aSMatthias Ringwald //
176*5fd0122aSMatthias Ringwald //! Gets the period of the SysTick counter.
177*5fd0122aSMatthias Ringwald //!
178*5fd0122aSMatthias Ringwald //! This function returns the rate at which the SysTick counter wraps, which
179*5fd0122aSMatthias Ringwald //! equates to the number of processor clocks between interrupts.
180*5fd0122aSMatthias Ringwald //!
181*5fd0122aSMatthias Ringwald //! \return Returns the period of the SysTick counter.
182*5fd0122aSMatthias Ringwald //
183*5fd0122aSMatthias Ringwald //*****************************************************************************
184*5fd0122aSMatthias Ringwald extern uint32_t SysTick_getPeriod(void);
185*5fd0122aSMatthias Ringwald 
186*5fd0122aSMatthias Ringwald //*****************************************************************************
187*5fd0122aSMatthias Ringwald //
188*5fd0122aSMatthias Ringwald //! Gets the current value of the SysTick counter.
189*5fd0122aSMatthias Ringwald //!
190*5fd0122aSMatthias Ringwald //! This function returns the current value of the SysTick counter, which is
191*5fd0122aSMatthias Ringwald //! a value between the period - 1 and zero, inclusive.
192*5fd0122aSMatthias Ringwald //!
193*5fd0122aSMatthias Ringwald //! \return Returns the current value of the SysTick counter.
194*5fd0122aSMatthias Ringwald //
195*5fd0122aSMatthias Ringwald //*****************************************************************************
196*5fd0122aSMatthias Ringwald extern uint32_t SysTick_getValue(void);
197*5fd0122aSMatthias Ringwald 
198*5fd0122aSMatthias Ringwald //*****************************************************************************
199*5fd0122aSMatthias Ringwald //
200*5fd0122aSMatthias Ringwald // Mark the end of the C bindings section for C++ compilers.
201*5fd0122aSMatthias Ringwald //
202*5fd0122aSMatthias Ringwald //*****************************************************************************
203*5fd0122aSMatthias Ringwald #ifdef __cplusplus
204*5fd0122aSMatthias Ringwald }
205*5fd0122aSMatthias Ringwald #endif
206*5fd0122aSMatthias Ringwald 
207*5fd0122aSMatthias Ringwald //*****************************************************************************
208*5fd0122aSMatthias Ringwald //
209*5fd0122aSMatthias Ringwald // Close the Doxygen group.
210*5fd0122aSMatthias Ringwald //! @}
211*5fd0122aSMatthias Ringwald //
212*5fd0122aSMatthias Ringwald //*****************************************************************************
213*5fd0122aSMatthias Ringwald 
214*5fd0122aSMatthias Ringwald #endif // __SYSTICK_H__
215