diff options
Diffstat (limited to 'lib/chibios-contrib/ext/mcux-sdk/components/time_stamp/fsl_adapter_time_stamp.h')
-rw-r--r-- | lib/chibios-contrib/ext/mcux-sdk/components/time_stamp/fsl_adapter_time_stamp.h | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/lib/chibios-contrib/ext/mcux-sdk/components/time_stamp/fsl_adapter_time_stamp.h b/lib/chibios-contrib/ext/mcux-sdk/components/time_stamp/fsl_adapter_time_stamp.h new file mode 100644 index 000000000..6460f5d00 --- /dev/null +++ b/lib/chibios-contrib/ext/mcux-sdk/components/time_stamp/fsl_adapter_time_stamp.h | |||
@@ -0,0 +1,123 @@ | |||
1 | /* | ||
2 | * Copyright 2020 NXP | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * | ||
6 | * SPDX-License-Identifier: BSD-3-Clause | ||
7 | */ | ||
8 | |||
9 | #ifndef _TIMER_STAMP_H_ | ||
10 | #define _TIMER_STAMP_H_ | ||
11 | |||
12 | /************************************************************************************ | ||
13 | ************************************************************************************* | ||
14 | * Include | ||
15 | ************************************************************************************* | ||
16 | ***********************************************************************************/ | ||
17 | #include "fsl_common.h" | ||
18 | #if defined(FSL_RTOS_FREE_RTOS) | ||
19 | #include "FreeRTOS.h" | ||
20 | #endif | ||
21 | |||
22 | /************************************************************************************ | ||
23 | ************************************************************************************* | ||
24 | * Public types | ||
25 | ************************************************************************************* | ||
26 | ************************************************************************************/ | ||
27 | /*! @brief HAL timer configuration structure for HAL time stamp setting. */ | ||
28 | typedef struct _hal_time_stamp_config | ||
29 | { | ||
30 | uint32_t srcClock_Hz; /*!< Source clock of the timer */ | ||
31 | uint8_t instance; /*!< Hardware timer module instance, for example: if you want use FTM0,then the instance is configured to 0, if | ||
32 | you want use FTM2 hardware timer, then configure the instance to 2, detail information please refer to the | ||
33 | SOC corresponding RM.Invalid instance value will cause initialization failure. */ | ||
34 | #if (defined(TM_ENABLE_TIME_STAMP_CLOCK_SELECT) && (TM_ENABLE_TIME_STAMP_CLOCK_SELECT > 0U)) | ||
35 | uint8_t clockSrcSelect; /*!< Select clock source. It is just for lptmr timer clock select, if the lptmr does not | ||
36 | want to use the default clock source*/ | ||
37 | #endif | ||
38 | } hal_time_stamp_config_t; | ||
39 | |||
40 | /*! @brief Definition of time stamp adapter handle size. */ | ||
41 | #define HAL_TIME_STAMP_HANDLE_SIZE (8U) | ||
42 | |||
43 | /*! | ||
44 | * @brief Defines the time stamp handle | ||
45 | * | ||
46 | * This macro is used to define a 4 byte aligned time stamp handle. | ||
47 | * Then use "(hal_time_stamp_handle_t)name" to get the time stamp handle. | ||
48 | * | ||
49 | * The macro should be global and could be optional. You could also define time stamp handle by yourself. | ||
50 | * | ||
51 | * This is an example, | ||
52 | * @code | ||
53 | * TIME_STAMP_HANDLE_DEFINE(timeStampHandle); | ||
54 | * @endcode | ||
55 | * | ||
56 | * @param name The name string of the time stamp handle. | ||
57 | */ | ||
58 | #define TIME_STAMP_HANDLE_DEFINE(name) uint32_t name[((HAL_TIME_STAMP_HANDLE_SIZE + sizeof(uint32_t) - 1U) / sizeof(uint32_t))] | ||
59 | |||
60 | typedef void* hal_time_stamp_handle_t; | ||
61 | /************************************************************************************ | ||
62 | ************************************************************************************* | ||
63 | * Public prototypes | ||
64 | ************************************************************************************* | ||
65 | ************************************************************************************/ | ||
66 | #if defined(__cplusplus) | ||
67 | extern "C" { | ||
68 | #endif /* _cplusplus */ | ||
69 | |||
70 | /*! | ||
71 | * @brief Initializes the timer Stamp adapter module for a timer basic operation. | ||
72 | * | ||
73 | * @note This API should be called at the beginning of the application using the time stamp adapter. | ||
74 | * For Initializes time stamp adapter, | ||
75 | * @code | ||
76 | * TIME_STAMP_HANDLE_DEFINE(halTimeStampHandle); | ||
77 | * hal_time_stamp_config_t halTimeStampConfig; | ||
78 | * halTimeStampConfig.srcClock_Hz = BOARD_GetTimeSrcClock(); | ||
79 | * halTimeStampConfig.instance = 0; | ||
80 | * HAL_TimeStampInit(((hal_time_stamp_handle_t) halTimeStampHandle, &halTimerConfig); | ||
81 | * @endcode | ||
82 | * | ||
83 | * @param halTimeStampHandle HAL time stamp adapter handle, the handle buffer with size #HAL_TIME_STAMP_HANDLE_SIZE | ||
84 | * should be allocated at upper level. | ||
85 | * The handle should be 4 byte aligned, because unaligned access doesn't be supported on some devices. | ||
86 | * You can define the handle in the following two ways: | ||
87 | * #TIME_STAMP_HANDLE_DEFINE(halTimeStampHandle); | ||
88 | * or | ||
89 | * uint32_t halTimeStampHandle[((HAL_TIME_STAMP_HANDLE_SIZE + sizeof(uint32_t) - 1U) / sizeof(uint32_t))]; | ||
90 | * @param halTimeStampConfig A pointer to the HAL time stamp configuration structure | ||
91 | */ | ||
92 | void HAL_TimeStampInit(hal_time_stamp_handle_t halTimeStampHandle, hal_time_stamp_config_t* halTimeStampConfig); | ||
93 | |||
94 | /*! | ||
95 | * @brief Get the absolute time at the moment of the call. | ||
96 | * | ||
97 | * @param halTimerHandle HAL timer adapter handle | ||
98 | * @retval the absolute time(microsecond) at the moment of the call | ||
99 | */ | ||
100 | uint64_t HAL_GetTimeStamp(hal_time_stamp_handle_t halTimeStampHandle); | ||
101 | |||
102 | /*! | ||
103 | * @brief Timer stamp adapter power up function. | ||
104 | * | ||
105 | * @note This API should be called by low power module when system exit from sleep mode. | ||
106 | * | ||
107 | * @param halTimerHandle HAL timer adapter handle | ||
108 | */ | ||
109 | void HAL_TimeStampExitLowpower(hal_time_stamp_handle_t halTimeStampHandle); | ||
110 | |||
111 | /*! | ||
112 | * @brief Timer stamp adapter power down function. | ||
113 | * | ||
114 | * @note This API should be called by low power module before system enter into sleep mode. | ||
115 | * | ||
116 | * @param halTimerHandle HAL timer adapter handle | ||
117 | */ | ||
118 | void HAL_TimeStampEnterLowpower(hal_time_stamp_handle_t halTimeStampHandle); | ||
119 | #if defined(__cplusplus) | ||
120 | } | ||
121 | #endif | ||
122 | /*! @}*/ | ||
123 | #endif /* _TIMER_STAMP_H_ */ | ||