1 /*
2  * Copyright 2020-2023 NXP
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 #ifndef OSIF_TIMER_SYSTEM_INTERNAL_SYSTICK
7 #define OSIF_TIMER_SYSTEM_INTERNAL_SYSTICK
8 
9 #ifdef __cplusplus
10 extern "C"{
11 #endif
12 
13 /*==================================================================================================
14 *                                          INCLUDE FILES
15 * 1) system and project includes
16 * 2) needed interfaces from external units
17 * 3) internal and external interfaces from this unit
18 ==================================================================================================*/
19 #include "OsIf_Cfg.h"
20 
21 /*==================================================================================================
22 *                                 SOURCE FILE VERSION INFORMATION
23 ==================================================================================================*/
24 #define OSIF_TIMER_SYSTEM_INTERNAL_SYSTICK_VENDOR_ID                    43
25 #define OSIF_TIMER_SYSTEM_INTERNAL_SYSTICK_AR_RELEASE_MAJOR_VERSION     4
26 #define OSIF_TIMER_SYSTEM_INTERNAL_SYSTICK_AR_RELEASE_MINOR_VERSION     7
27 #define OSIF_TIMER_SYSTEM_INTERNAL_SYSTICK_AR_RELEASE_REVISION_VERSION  0
28 #define OSIF_TIMER_SYSTEM_INTERNAL_SYSTICK_SW_MAJOR_VERSION             2
29 #define OSIF_TIMER_SYSTEM_INTERNAL_SYSTICK_SW_MINOR_VERSION             0
30 #define OSIF_TIMER_SYSTEM_INTERNAL_SYSTICK_SW_PATCH_VERSION             0
31 
32 /*==================================================================================================
33 *                                       FILE VERSION CHECKS
34 ==================================================================================================*/
35 /* Check if OsIf_Timer_System_Internal_Systick.h file and OsIf_Cfg.h file are of the same vendor */
36 #if (OSIF_TIMER_SYSTEM_INTERNAL_SYSTICK_VENDOR_ID != OSIF_CFG_VENDOR_ID)
37     #error "OsIf_Timer_System_Internal_Systick.h and OsIf_Cfg.h have different vendor ids"
38 #endif
39 /* Check if OsIf_Timer_System_Internal_Systick.h file and OsIf_Cfg.h file are of the same Autosar version */
40 #if ((OSIF_TIMER_SYSTEM_INTERNAL_SYSTICK_AR_RELEASE_MAJOR_VERSION    != OSIF_CFG_AR_RELEASE_MAJOR_VERSION) || \
41      (OSIF_TIMER_SYSTEM_INTERNAL_SYSTICK_AR_RELEASE_MINOR_VERSION    != OSIF_CFG_AR_RELEASE_MINOR_VERSION) || \
42      (OSIF_TIMER_SYSTEM_INTERNAL_SYSTICK_AR_RELEASE_REVISION_VERSION != OSIF_CFG_AR_RELEASE_REVISION_VERSION))
43     #error "AUTOSAR Version Numbers of OsIf_Timer_System_Internal_Systick.h and OsIf_Cfg.h are different"
44 #endif
45 /* Check if OsIf_Timer_System_Internal_Systick.h file and OsIf_Cfg.h file are of the same Software version */
46 #if ((OSIF_TIMER_SYSTEM_INTERNAL_SYSTICK_SW_MAJOR_VERSION != OSIF_CFG_SW_MAJOR_VERSION) || \
47      (OSIF_TIMER_SYSTEM_INTERNAL_SYSTICK_SW_MINOR_VERSION != OSIF_CFG_SW_MINOR_VERSION) || \
48      (OSIF_TIMER_SYSTEM_INTERNAL_SYSTICK_SW_PATCH_VERSION != OSIF_CFG_SW_PATCH_VERSION) \
49     )
50     #error "Software Version Numbers of OsIf_Timer_System_Internal_Systick.h and OsIf_Cfg.h are different"
51 #endif
52 
53 /*==================================================================================================
54 *                                            CONSTANTS
55 ==================================================================================================*/
56 
57 /*==================================================================================================
58 *                                       DEFINES AND MACROS
59 ==================================================================================================*/
60 
61 /*==================================================================================================
62 *                                              ENUMS
63 ==================================================================================================*/
64 
65 /*==================================================================================================
66 *                                  STRUCTURES AND OTHER TYPEDEFS
67 ==================================================================================================*/
68 
69 /*==================================================================================================
70 *                                  GLOBAL VARIABLE DECLARATIONS
71 ==================================================================================================*/
72 
73 /*==================================================================================================
74 *                                       FUNCTION PROTOTYPES
75 ==================================================================================================*/
76 #if defined(OSIF_USE_SYSTICK)
77 #if (OSIF_USE_SYSTICK == STD_ON)
78 
79 #define BASENXP_START_SEC_CODE
80 #include "BaseNXP_MemMap.h"
81 /*!
82  * @brief Initialize SysTick timer
83  *
84  * This function initializes SysTick timer
85  *
86  * @param[in] SystemCounterFreq     Systick's frequency
87  * @return void
88  */
89 void OsIf_Timer_System_Internal_Init(uint32 SystemCounterFreq);
90 
91 /*!
92  * @brief Get current counter value of SysTick timer
93  *
94  * This function gets current counter value of SysTick timer
95  *
96  * @param[in] void
97  * @return current counter value
98  */
99 uint32 OsIf_Timer_System_Internal_GetCounter(void);
100 
101 /*!
102  * @brief Get elapsed time
103  *
104  * This function gets elapsed time
105  *
106  * @param[in] CurrentRef - pointer to old counter value
107  * @return elapsed time
108  */
109 uint32 OsIf_Timer_System_Internal_GetElapsed(uint32 * const CurrentRef);
110 
111 #define BASENXP_STOP_SEC_CODE
112 #include "BaseNXP_MemMap.h"
113 
114 #endif /* (OSIF_USE_SYSTICK == STD_ON) */
115 #endif /* defined(OSIF_USE_SYSTICK) */
116 
117 #ifdef __cplusplus
118 }
119 #endif
120 
121 #endif /* OSIF_TIMER_SYSTEM_INTERNAL_SYSTICK */
122