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