VSF Documented
timer_template.inc
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright(C)2009-2022 by VSF Team *
3 * *
4 * Licensed under the Apache License, Version 2.0 (the "License"); *
5 * you may not use this file except in compliance with the License. *
6 * You may obtain a copy of the License at *
7 * *
8 * http://www.apache.org/licenses/LICENSE-2.0 *
9 * *
10 * Unless required by applicable law or agreed to in writing, software *
11 * distributed under the License is distributed on an "AS IS" BASIS, *
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
13 * See the License for the specific language governing permissions and *
14 * limitations under the License. *
15 * *
16 ****************************************************************************/
17
18#if VSF_HAL_USE_TIMER == ENABLED
19
20/*============================ INCLUDES ======================================*/
21/*============================ MACROS ========================================*/
22
23#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_CAPABILITY
24# define VSF_TIMER_CFG_REIMPLEMENT_API_CAPABILITY DISABLED
25#endif
26
27#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_CTRL
28# define VSF_TIMER_CFG_REIMPLEMENT_API_CTRL DISABLED
29#endif
30
31#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_STATUS
32# define VSF_TIMER_CFG_REIMPLEMENT_API_STATUS DISABLED
33#endif
34
35#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL
36# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL DISABLED
37#endif
38
39#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_CONFIG
40# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_CONFIG VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL
41#endif
42
43#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_START
44# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_START VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL
45#endif
46
47#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_STOP
48# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_STOP VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL
49#endif
50
51#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_REQUEST_START
52# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_REQUEST_START VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL
53#endif
54
55#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_REQUEST_STOP
56# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_REQUEST_STOP VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL
57#endif
58
59#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_CTRL
60# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_CTRL VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL
61#endif
62
63#ifdef VSF_TIMER_CFG_IMP_REMAP_PREFIX
64# undef VSF_TIMER_CFG_REIMPLEMENT_API_CAPABILITY
65# undef VSF_TIMER_CFG_REIMPLEMENT_API_CTRL
66# undef VSF_TIMER_CFG_REIMPLEMENT_API_STATUS
67# undef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_CONFIG
68# undef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_START
69# undef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_STOP
70# undef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_REQUEST_START
71# undef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_REQUEST_STOP
72# undef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_CTRL
73# define VSF_TIMER_CFG_REIMPLEMENT_API_CAPABILITY ENABLED
74# define VSF_TIMER_CFG_REIMPLEMENT_API_CTRL ENABLED
75# define VSF_TIMER_CFG_REIMPLEMENT_API_STATUS ENABLED
76# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_CONFIG ENABLED
77# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_START ENABLED
78# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_STOP ENABLED
79# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_REQUEST_START ENABLED
80# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_REQUEST_STOP ENABLED
81# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_CTRL ENABLED
82#endif
83
84#if VSF_TIMER_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
85# ifndef VSF_TIMER_CFG_CAPABILITY_IRQ_MASK
86# define VSF_TIMER_CFG_CAPABILITY_IRQ_MASK VSF_TIMER_IRQ_ALL_BITS_MASK
87# endif
88# ifndef VSF_TIMER_CFG_CAPABILITY_TIMER_BITLEN
89# define VSF_TIMER_CFG_CAPABILITY_TIMER_BITLEN 32
90# endif
91# ifndef VSF_TIMER_CFG_CAPABILITY_SUPPORT_PWM
92# define VSF_TIMER_CFG_CAPABILITY_SUPPORT_PWM 1
93# endif
94# ifndef VSF_TIMER_CFG_CAPABILITY_PWM_CHANNEL_CNT
95# define VSF_TIMER_CFG_CAPABILITY_PWM_CHANNEL_CNT 32
96# endif
97#endif
98
99/*============================ MACROFIED FUNCTIONS ===========================*/
100/*============================ TYPES =========================================*/
101/*============================ GLOBAL VARIABLES ==============================*/
102/*============================ LOCAL VARIABLES ===============================*/
103
104#define vsf_real_timer_t VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_t)
105#define vsf_real_timer_capability VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_capability)
106#define vsf_real_timer_ctrl VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_ctrl)
107#define vsf_real_timer_status VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_status)
108#define vsf_real_timer_channel_config VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_channel_config)
109#define vsf_real_timer_channel_start VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_channel_start)
110#define vsf_real_timer_channel_stop VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_channel_stop)
111#define vsf_real_timer_channel_request_start VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_channel_request_start)
112#define vsf_real_timer_channel_request_stop VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_channel_request_stop)
113#define vsf_real_timer_channel_ctrl VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_channel_ctrl)
114
115/*============================ PROTOTYPES ====================================*/
116/*============================ IMPLEMENTATION ================================*/
117
118#if VSF_TIMER_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
119vsf_timer_capability_t vsf_real_timer_capability(vsf_real_timer_t *timer_ptr)
120{
121 vsf_timer_capability_t timer_capability = {
125 .channel_cnt = VSF_TIMER_CFG_CAPABILITY_PWM_CHANNEL_CNT,
126 };
127
128 return timer_capability;
129}
130#endif
131
132#if VSF_TIMER_CFG_REIMPLEMENT_API_CTRL == DISABLED
133vsf_err_t vsf_real_timer_ctrl(vsf_real_timer_t *timer_ptr, vsf_timer_ctrl_t ctrl, void *param)
134{
135 VSF_HAL_ASSERT(NULL != timer_ptr);
136
137 return VSF_ERR_NOT_SUPPORT;
138}
139#endif
140
141#if VSF_TIMER_CFG_REIMPLEMENT_API_STATUS == DISABLED
142vsf_timer_status_t vsf_real_timer_status(vsf_real_timer_t *timer_ptr)
143{
144 VSF_HAL_ASSERT(NULL != timer_ptr);
146
147 return (vsf_timer_status_t){
148 .value = 0,
149 };
150}
151#endif
152
153#if VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_CONFIG == DISABLED
154vsf_err_t vsf_real_timer_channel_config(vsf_real_timer_t *timer_ptr, uint8_t channel, vsf_timer_channel_cfg_t *cfg_ptr)
155{
156 VSF_HAL_ASSERT(NULL != timer_ptr);
157 VSF_HAL_ASSERT(NULL != cfg_ptr);
158
159 return VSF_ERR_NOT_SUPPORT;
160}
161#endif
162
163#if VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_START == DISABLED
164vsf_err_t vsf_real_timer_channel_start(vsf_real_timer_t *timer_ptr, uint8_t channel)
165{
166 VSF_HAL_ASSERT(NULL != timer_ptr);
167
168 return VSF_ERR_NOT_SUPPORT;
169}
170#endif
171
172#if VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_STOP == DISABLED
173vsf_err_t vsf_real_timer_channel_stop(vsf_real_timer_t *timer_ptr, uint8_t channel)
174{
175 VSF_HAL_ASSERT(NULL != timer_ptr);
176
177 return VSF_ERR_NOT_SUPPORT;
178}
179#endif
180
181#if VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_REQUEST_START == DISABLED
182vsf_err_t vsf_real_timer_channel_request_start(vsf_real_timer_t *timer_ptr, uint8_t channel, vsf_timer_channel_request_t *request_ptr)
183{
184 VSF_HAL_ASSERT((NULL != timer_ptr) && (NULL != request_ptr));
185
186 return VSF_ERR_NOT_SUPPORT;
187}
188#endif
189
190#if VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_REQUEST_STOP == DISABLED
191vsf_err_t vsf_real_timer_channel_request_stop(vsf_real_timer_t *timer_ptr, uint8_t channel)
192{
193 VSF_HAL_ASSERT(NULL != timer_ptr);
194
195 return VSF_ERR_NOT_SUPPORT;
196}
197#endif
198
199#if VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_CTRL == DISABLED
200vsf_err_t vsf_real_timer_channel_ctrl(vsf_real_timer_t *timer_ptr, uint8_t channel, vsf_timer_channel_ctrl_t ctrl, void *param)
201{
202 VSF_HAL_ASSERT(NULL != timer_ptr);
203
204 return VSF_ERR_NOT_SUPPORT;
205}
206#endif
207
208/*============================ MACROS ========================================*/
209
210#undef VSF_TIMER_CFG_REIMPLEMENT_API_CAPABILITY
211#undef VSF_TIMER_CFG_CAPABILITY_IRQ_MASK
212#undef VSF_TIMER_CFG_CAPABILITY_TIMER_BITLEN
213#undef VSF_TIMER_CFG_CAPABILITY_SUPPORT_PWM
214#undef VSF_TIMER_CFG_CAPABILITY_PWM_CHANNEL_CNT
215#undef vsf_real_timer_t
216#undef vsf_real_timer_capability
217#undef vsf_real_timer_ctrl
218#undef vsf_real_timer_channel_config
219#undef vsf_real_timer_channel_start
220#undef vsf_real_timer_channel_stop
221#undef vsf_real_timer_channel_request_start
222#undef vsf_real_timer_channel_request_stop
223#undef vsf_real_timer_channel_ctrl
224
225/*============================ MACROS ========================================*/
226
227#ifdef VSF_TIMER_CFG_IMP_REMAP_PREFIX
228
229# define vsf_imp_timer_t VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_t)
230# define vsf_imp_timer_init VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_init)
231# define vsf_imp_timer_fini VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_fini)
232# define vsf_imp_timer_enable VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_enable)
233# define vsf_imp_timer_disable VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_disable)
234# define vsf_imp_timer_capability VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_capability)
235# define vsf_imp_timer_irq_enable VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_irq_enable)
236# define vsf_imp_timer_irq_disable VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_irq_disable)
237# define vsf_imp_timer_channel_config VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_channel_config)
238# define vsf_imp_timer_channel_start VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_channel_start)
239# define vsf_imp_timer_channel_stop VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_channel_stop)
240# define vsf_imp_timer_channel_ctrl VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_channel_ctrl)
241# define vsf_imp_timer_ctrl VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_ctrl)
242
243# define vsf_remap_timer_t VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_t)
244# define vsf_remap_timer_init VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_init)
245# define vsf_remap_timer_fini VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_fini)
246# define vsf_remap_timer_enable VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_enable)
247# define vsf_remap_timer_disable VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_disable)
248# define vsf_remap_timer_capability VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_capability)
249# define vsf_remap_timer_irq_enable VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_irq_enable)
250# define vsf_remap_timer_irq_disable VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_irq_disable)
251# define vsf_remap_timer_channel_config VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_channel_config)
252# define vsf_remap_timer_channel_start VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_channel_start)
253# define vsf_remap_timer_channel_stop VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_channel_stop)
254# define vsf_remap_timer_channel_ctrl VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_channel_ctrl)
255# define vsf_remap_timer_ctrl VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_ctrl)
256
257# define VSF_TIMER_CFG_IMP_REMAP_FUNCTIONS \
258 vsf_err_t vsf_imp_timer_init(vsf_imp_timer_t *timer_ptr, vsf_timer_cfg_t *cfg_ptr) \
259 { \
260 VSF_HAL_ASSERT(timer_ptr != NULL); \
261 return vsf_remap_timer_init(timer_ptr, cfg_ptr); \
262 } \
263 void vsf_imp_timer_fini(vsf_imp_timer_t *timer_ptr) \
264 { \
265 VSF_HAL_ASSERT(timer_ptr != NULL); \
266 vsf_remap_timer_fini(timer_ptr); \
267 } \
268 fsm_rt_t vsf_imp_timer_enable(vsf_imp_timer_t *timer_ptr) \
269 { \
270 VSF_HAL_ASSERT(timer_ptr != NULL); \
271 return vsf_remap_timer_enable(timer_ptr); \
272 } \
273 fsm_rt_t vsf_imp_timer_disable(vsf_imp_timer_t *timer_ptr) \
274 { \
275 VSF_HAL_ASSERT(timer_ptr != NULL); \
276 return vsf_remap_timer_disable(timer_ptr); \
277 } \
278 void vsf_imp_timer_irq_enable(vsf_imp_timer_t *timer_ptr, vsf_timer_irq_mask_t irq_mask) \
279 { \
280 VSF_HAL_ASSERT(timer_ptr != NULL); \
281 vsf_remap_timer_irq_enable(timer_ptr, irq_mask); \
282 } \
283 void vsf_imp_timer_irq_disable(vsf_imp_timer_t *timer_ptr, vsf_timer_irq_mask_t irq_mask) \
284 { \
285 VSF_HAL_ASSERT(timer_ptr != NULL); \
286 vsf_remap_timer_irq_disable(timer_ptr, irq_mask); \
287 } \
288 vsf_timer_capability_t vsf_imp_timer_capability(vsf_imp_timer_t *timer_ptr) \
289 { \
290 VSF_HAL_ASSERT(timer_ptr != NULL); \
291 return vsf_remap_timer_capability(timer_ptr); \
292 } \
293 vsf_err_t vsf_imp_timer_pwm_set(vsf_imp_timer_t *timer_ptr, uint8_t channel, uint32_t period, uint32_t pulse) \
294 { \
295 VSF_HAL_ASSERT(NULL != timer_ptr); \
296 return vsf_remap_timer_pwm_set(timer_ptr, channel, period, pulse); \
297 } \
298 vsf_err_t vsf_imp_timer_channel_config(vsf_imp_timer_t *timer_ptr, uint8_t channel, \
299 vsf_timer_channel_cfg_t *cfg_ptr) \
300 { \
301 VSF_HAL_ASSERT(NULL != timer_ptr); \
302 return vsf_remap_timer_channel_config(timer_ptr, channel, cfg_ptr); \
303 } \
304 fsm_rt_t vsf_imp_timer_channel_start(vsf_imp_timer_t *timer_ptr, uint8_t channel) \
305 { \
306 VSF_HAL_ASSERT(NULL != timer_ptr); \
307 return vsf_remap_timer_channel_start(timer_ptr, channel); \
308 } \
309 fsm_rt_t vsf_imp_timer_channel_stop(vsf_imp_timer_t *timer_ptr, uint8_t channel) \
310 { \
311 VSF_HAL_ASSERT(NULL != timer_ptr); \
312 return vsf_remap_timer_channel_stop(timer_ptr, channel); \
313 } \
314 vsf_err_t vsf_imp_timer_channel_ctrl(vsf_imp_timer_t *timer_ptr, uint8_t channel, \
315 vsf_timer_channel_ctrl_t ctrl, void *param) \
316 { \
317 VSF_HAL_ASSERT(NULL != timer_ptr); \
318 return vsf_remap_timer_channel_ctrl(timer_ptr, channel, ctrl, param); \
319 } \
320 void vsf_imp_timer_ctrl(vsf_imp_timer_t *timer_ptr, uint_fast32_t ctrl_bit, bool level) \
321 { \
322 VSF_HAL_ASSERT(NULL != timer_ptr); \
323 vsf_remap_timer_ctrl(timer_ptr, ctrl_bit, level); \
324 }
325#endif
326
327/*============================ GLOBAL VARIABLES ==============================*/
328
329#define VSF_HAL_TEMPLATE_IMP_NAME _timer
330#define VSF_HAL_TEMPLATE_IMP_UPCASE_NAME _TIMER
331
332#ifndef VSF_TIMER_CFG_IMP_PREFIX
333# error "Please define VSF_TIMER_CFG_IMP_PREFIX in timer driver"
334#endif
335
336#ifndef VSF_TIMER_CFG_IMP_UPCASE_PREFIX
337# error "Please define VSF_TIMER_CFG_IMP_UPCASE_PREFIX in timer driver"
338#endif
339
340#ifndef VSF_TIMER_CFG_IMP_COUNT_MASK_PREFIX
341# define VSF_TIMER_CFG_IMP_COUNT_MASK_PREFIX VSF_TIMER_CFG_IMP_UPCASE_PREFIX
342#endif
343
344#ifdef VSF_TIMER_CFG_IMP_REMAP_FUNCTIONS
345# define VSF_HAL_CFG_IMP_REMAP_FUNCTIONS VSF_TIMER_CFG_IMP_REMAP_FUNCTIONS
346#endif
347
349
350#undef VSF_TIMER_CFG_IMP_PREFIX
351#undef VSF_TIMER_CFG_IMP_COUNT_MASK_PREFIX
352#undef VSF_TIMER_CFG_IMP_UPCASE_PREFIX
353#undef VSF_TIMER_CFG_IMP_LV0
354#undef VSF_TIMER_CFG_IMP_REMAP_FUNCTIONS
355#undef VSF_TIMER_CFG_IMP_HAS_OP
356#undef VSF_TIMER_CFG_IMP_EXTERN_OP
357
358#undef vsf_imp_timer_t
359#undef vsf_imp_timer_init
360#undef vsf_imp_timer_fini
361#undef vsf_imp_timer_enable
362#undef vsf_imp_timer_disable
363#undef vsf_imp_timer_capability
364#undef vsf_imp_timer_irq_enable
365#undef vsf_imp_timer_irq_disable
366#undef vsf_imp_timer_channel_config
367#undef vsf_imp_timer_channel_start
368#undef vsf_imp_timer_channel_stop
369#undef vsf_imp_timer_channel_ctrl
370#undef vsf_imp_timer_ctrl
371
372#undef vsf_remap_timer_t
373#undef vsf_remap_timer_init
374#undef vsf_remap_timer_fini
375#undef vsf_remap_timer_enable
376#undef vsf_remap_timer_disable
377#undef vsf_remap_timer_capability
378#undef vsf_remap_timer_irq_enable
379#undef vsf_remap_timer_irq_disable
380#undef vsf_remap_timer_channel_config
381#undef vsf_remap_timer_channel_start
382#undef vsf_remap_timer_channel_stop
383#undef vsf_remap_timer_channel_ctrl
384#undef vsf_remap_timer_ctrl
385
386#endif /* VSF_HAL_USE_TIEMR */
vsf_err_t
Definition __type.h:42
@ VSF_ERR_NOT_SUPPORT
function not supported
Definition __type.h:46
#define VSF_TIMER_CFG_CAPABILITY_SUPPORT_PWM
Definition timer.c:203
#define VSF_TIMER_CFG_CAPABILITY_TIMER_BITLEN
Definition timer.c:202
#define VSF_TIMER_CFG_CAPABILITY_IRQ_MASK
Definition timer.c:201
#define NULL
Definition lvgl.h:26
unsigned char uint8_t
Definition stdint.h:5
Definition vsf_template_timer.h:598
vsf_timer_irq_mask_t irq_mask
Definition timer.h:234
Definition vsf_template_timer.h:509
Definition vsf_template_timer.h:561
TIMER status information structure Contains the current status of TIMER operations.
Definition vsf_template_timer.h:588
#define VSF_HAL_ASSERT(__CON)
all hal modules use this configuration file
Definition vsf_hal_cfg.h:36
vsf_timer_ctrl_t
Predefined VSF TIMER control command that can be reimplemented in specific hal drivers....
Definition vsf_template_timer.h:533
vsf_timer_channel_ctrl_t
Predefined VSF TIMER control command that can be reimplemented in specific hal drivers....
Definition vsf_template_timer.h:555