1 /******************************************************************************
2  *  Filename:       cpu.h
3  *
4  *  Description:    Defines and prototypes for the CPU instruction wrapper
5  *                  functions.
6  *
7  *  Copyright (c) 2022-2023 Texas Instruments Incorporated
8  *
9  *  Redistribution and use in source and binary forms, with or without
10  *  modification, are permitted provided that the following conditions are met:
11  *
12  *  1) Redistributions of source code must retain the above copyright notice,
13  *     this list of conditions and the following disclaimer.
14  *
15  *  2) Redistributions in binary form must reproduce the above copyright notice,
16  *     this list of conditions and the following disclaimer in the documentation
17  *     and/or other materials provided with the distribution.
18  *
19  *  3) Neither the name of the copyright holder nor the names of its
20  *     contributors may be used to endorse or promote products derived from this
21  *     software without specific prior written permission.
22  *
23  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
24  *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25  *  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26  *  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
27  *  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
28  *  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
29  *  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
30  *  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
31  *  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
32  *  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33  *  POSSIBILITY OF SUCH DAMAGE.
34  *
35  ******************************************************************************/
36 
37 #ifndef __CPU_H__
38 #define __CPU_H__
39 
40 //*****************************************************************************
41 //
42 //! \addtogroup system_cpu_group
43 //! @{
44 //! \addtogroup cpu_api
45 //! @{
46 //
47 //*****************************************************************************
48 
49 //*****************************************************************************
50 //
51 // If building with a C++ compiler, make all of the definitions in this header
52 // have a C binding.
53 //
54 //*****************************************************************************
55 #ifdef __cplusplus
56 extern "C" {
57 #endif
58 
59 #include <stdbool.h>
60 #include <stdint.h>
61 
62 //*****************************************************************************
63 //
64 // API Functions and prototypes
65 //
66 //*****************************************************************************
67 
68 //*****************************************************************************
69 //
70 //! \brief Provide a small non-zero delay using a simple loop counter.
71 //!
72 //! This function provides means for generating a constant length delay. It is
73 //! written in assembly to keep the delay consistent across tool chains,
74 //! avoiding the need to tune the delay based on the tool chain in use.
75 //!
76 //! \note It is not recommended using this function for long delays. For longer
77 //! delays, consider using ROM function \ref HapiWaitUs().
78 //!
79 //! \note If using an RTOS, consider using RTOS provided delay functions because
80 //! these will not block task scheduling and will potentially save power.
81 //!
82 //! \note Interrupts can affect the delay if not manually disabled in advance.
83 //!
84 //! \note The delay depends on where code resides and the path for code
85 //! fetching, consider using ROM function \ref HapiWaitUs().
86 //!
87 //! \param count is the number of delay loop iterations to perform. Number must
88 //! be greater than zero.
89 //!
90 //! \sa HapiWaitUs()
91 //!
92 //! \return None
93 //
94 //*****************************************************************************
95 extern void CPUDelay(uint32_t count);
96 
97 //*****************************************************************************
98 //
99 // Mark the end of the C bindings section for C++ compilers.
100 //
101 //*****************************************************************************
102 #ifdef __cplusplus
103 }
104 #endif
105 
106 //*****************************************************************************
107 //
108 //! Close the Doxygen group.
109 //! @}
110 //! @}
111 //
112 //*****************************************************************************
113 
114 #endif // __CPU_H__
115