1 /**************************************************************************//** 2 * @file os_tick.h 3 * @brief CMSIS OS Tick header file 4 * @version V1.0.2 5 * @date 19. March 2021 6 ******************************************************************************/ 7 /* 8 * Copyright (c) 2017-2021 ARM Limited. All rights reserved. 9 * 10 * SPDX-License-Identifier: Apache-2.0 11 * 12 * Licensed under the Apache License, Version 2.0 (the License); you may 13 * not use this file except in compliance with the License. 14 * You may obtain a copy of the License at 15 * 16 * www.apache.org/licenses/LICENSE-2.0 17 * 18 * Unless required by applicable law or agreed to in writing, software 19 * distributed under the License is distributed on an AS IS BASIS, WITHOUT 20 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 21 * See the License for the specific language governing permissions and 22 * limitations under the License. 23 */ 24 25 #ifndef OS_TICK_H 26 #define OS_TICK_H 27 28 #include <stdint.h> 29 30 #ifdef __cplusplus 31 extern "C" 32 { 33 #endif 34 35 /// IRQ Handler. 36 #ifndef IRQHANDLER_T 37 #define IRQHANDLER_T 38 typedef void (*IRQHandler_t) (void); 39 #endif 40 41 /// Setup OS Tick timer to generate periodic RTOS Kernel Ticks 42 /// \param[in] freq tick frequency in Hz 43 /// \param[in] handler tick IRQ handler 44 /// \return 0 on success, -1 on error. 45 int32_t OS_Tick_Setup (uint32_t freq, IRQHandler_t handler); 46 47 /// Enable OS Tick timer interrupt 48 void OS_Tick_Enable (void); 49 50 /// Disable OS Tick timer interrupt 51 void OS_Tick_Disable (void); 52 53 /// Acknowledge execution of OS Tick timer interrupt 54 void OS_Tick_AcknowledgeIRQ (void); 55 56 /// Get OS Tick timer IRQ number 57 /// \return OS Tick IRQ number 58 int32_t OS_Tick_GetIRQn (void); 59 60 /// Get OS Tick timer clock frequency 61 /// \return OS Tick timer clock frequency in Hz 62 uint32_t OS_Tick_GetClock (void); 63 64 /// Get OS Tick timer interval reload value 65 /// \return OS Tick timer interval reload value 66 uint32_t OS_Tick_GetInterval (void); 67 68 /// Get OS Tick timer counter value 69 /// \return OS Tick timer counter value 70 uint32_t OS_Tick_GetCount (void); 71 72 /// Get OS Tick timer overflow status 73 /// \return OS Tick overflow status (1 - overflow, 0 - no overflow). 74 uint32_t OS_Tick_GetOverflow (void); 75 76 #ifdef __cplusplus 77 } 78 #endif 79 80 #endif /* OS_TICK_H */ 81