18#if VSF_HAL_USE_TIMER == ENABLED
23#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_CAPABILITY
25#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_GET_CONFIGURATION
26# define VSF_TIMER_CFG_REIMPLEMENT_API_GET_CONFIGURATION DISABLED
28# define VSF_TIMER_CFG_REIMPLEMENT_API_CAPABILITY DISABLED
31#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_CTRL
32# define VSF_TIMER_CFG_REIMPLEMENT_API_CTRL DISABLED
35#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_STATUS
36# define VSF_TIMER_CFG_REIMPLEMENT_API_STATUS DISABLED
39#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL
40# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL DISABLED
43#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_CONFIG
44# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_CONFIG VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL
47#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_START
48# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_START VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL
51#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_STOP
52# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_STOP VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL
55#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_REQUEST_START
56# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_REQUEST_START VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL
59#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_REQUEST_STOP
60# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_REQUEST_STOP VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL
63#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_CTRL
64# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_CTRL VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL
67#ifdef VSF_TIMER_CFG_IMP_REMAP_PREFIX
68# undef VSF_TIMER_CFG_REIMPLEMENT_API_CAPABILITY
69# undef VSF_TIMER_CFG_REIMPLEMENT_API_CTRL
70# undef VSF_TIMER_CFG_REIMPLEMENT_API_STATUS
71# undef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_CONFIG
72# undef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_START
73# undef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_STOP
74# undef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_REQUEST_START
75# undef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_REQUEST_STOP
76# undef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_CTRL
77# define VSF_TIMER_CFG_REIMPLEMENT_API_CAPABILITY ENABLED
78# undef VSF_TIMER_CFG_REIMPLEMENT_API_GET_CONFIGURATION
79# define VSF_TIMER_CFG_REIMPLEMENT_API_GET_CONFIGURATION ENABLED
80# define VSF_TIMER_CFG_REIMPLEMENT_API_CTRL ENABLED
81# define VSF_TIMER_CFG_REIMPLEMENT_API_STATUS ENABLED
82# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_CONFIG ENABLED
83# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_START ENABLED
84# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_STOP ENABLED
85# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_REQUEST_START ENABLED
86# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_REQUEST_STOP ENABLED
87# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_CTRL ENABLED
90#if VSF_TIMER_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
91# ifndef VSF_TIMER_CFG_CAPABILITY_IRQ_MASK
92# define VSF_TIMER_CFG_CAPABILITY_IRQ_MASK VSF_TIMER_IRQ_ALL_BITS_MASK
94# ifndef VSF_TIMER_CFG_CAPABILITY_TIMER_BITLEN
95# define VSF_TIMER_CFG_CAPABILITY_TIMER_BITLEN 32
97# ifndef VSF_TIMER_CFG_CAPABILITY_SUPPORT_PWM
98# define VSF_TIMER_CFG_CAPABILITY_SUPPORT_PWM 1
100# ifndef VSF_TIMER_CFG_CAPABILITY_PWM_CHANNEL_CNT
101# define VSF_TIMER_CFG_CAPABILITY_PWM_CHANNEL_CNT 32
110#define vsf_real_timer_t VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_t)
111#define vsf_real_timer_capability VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_capability)
112#define vsf_real_timer_get_configuration VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_get_configuration)
113#define vsf_real_timer_ctrl VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_ctrl)
114#define vsf_real_timer_status VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_status)
115#define vsf_real_timer_channel_config VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_channel_config)
116#define vsf_real_timer_channel_start VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_channel_start)
117#define vsf_real_timer_channel_stop VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_channel_stop)
118#define vsf_real_timer_channel_request_start VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_channel_request_start)
119#define vsf_real_timer_channel_request_stop VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_channel_request_stop)
120#define vsf_real_timer_channel_ctrl VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_channel_ctrl)
125#if VSF_TIMER_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
132 .channel_cnt = VSF_TIMER_CFG_CAPABILITY_PWM_CHANNEL_CNT,
135 return timer_capability;
139#if VSF_TIMER_CFG_REIMPLEMENT_API_CTRL == DISABLED
148#if VSF_TIMER_CFG_REIMPLEMENT_API_STATUS == DISABLED
160#if VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_CONFIG == DISABLED
170#if VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_START == DISABLED
171vsf_err_t vsf_real_timer_channel_start(vsf_real_timer_t *timer_ptr,
uint8_t channel)
179#if VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_STOP == DISABLED
180vsf_err_t vsf_real_timer_channel_stop(vsf_real_timer_t *timer_ptr,
uint8_t channel)
188#if VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_REQUEST_START == DISABLED
197#if VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_REQUEST_STOP == DISABLED
198vsf_err_t vsf_real_timer_channel_request_stop(vsf_real_timer_t *timer_ptr,
uint8_t channel)
206#if VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_CTRL == DISABLED
215#if VSF_TIMER_CFG_REIMPLEMENT_API_GET_CONFIGURATION == DISABLED
230#undef VSF_TIMER_CFG_REIMPLEMENT_API_CAPABILITY
231#undef VSF_TIMER_CFG_REIMPLEMENT_API_GET_CONFIGURATION
232#undef VSF_TIMER_CFG_CAPABILITY_IRQ_MASK
233#undef VSF_TIMER_CFG_CAPABILITY_TIMER_BITLEN
234#undef VSF_TIMER_CFG_CAPABILITY_SUPPORT_PWM
235#undef VSF_TIMER_CFG_CAPABILITY_PWM_CHANNEL_CNT
236#undef vsf_real_timer_t
237#undef vsf_real_timer_capability
238#undef vsf_real_timer_get_configuration
239#undef vsf_real_timer_ctrl
240#undef vsf_real_timer_channel_config
241#undef vsf_real_timer_channel_start
242#undef vsf_real_timer_channel_stop
243#undef vsf_real_timer_channel_request_start
244#undef vsf_real_timer_channel_request_stop
245#undef vsf_real_timer_channel_ctrl
249#ifdef VSF_TIMER_CFG_IMP_REMAP_PREFIX
251# define vsf_imp_timer_t VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_t)
252# define vsf_imp_timer_init VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_init)
253# define vsf_imp_timer_fini VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_fini)
254# define vsf_imp_timer_enable VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_enable)
255# define vsf_imp_timer_disable VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_disable)
256# define vsf_imp_timer_capability VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_capability)
257# define vsf_imp_timer_irq_enable VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_irq_enable)
258# define vsf_imp_timer_irq_disable VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_irq_disable)
259# define vsf_imp_timer_channel_config VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_channel_config)
260# define vsf_imp_timer_channel_start VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_channel_start)
261# define vsf_imp_timer_channel_stop VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_channel_stop)
262# define vsf_imp_timer_channel_ctrl VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_channel_ctrl)
263# define vsf_imp_timer_ctrl VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_ctrl)
264# define vsf_imp_timer_get_configuration VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_get_configuration)
266# define vsf_remap_timer_t VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_t)
267# define vsf_remap_timer_init VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_init)
268# define vsf_remap_timer_fini VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_fini)
269# define vsf_remap_timer_enable VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_enable)
270# define vsf_remap_timer_disable VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_disable)
271# define vsf_remap_timer_capability VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_capability)
272# define vsf_remap_timer_irq_enable VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_irq_enable)
273# define vsf_remap_timer_irq_disable VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_irq_disable)
274# define vsf_remap_timer_channel_config VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_channel_config)
275# define vsf_remap_timer_channel_start VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_channel_start)
276# define vsf_remap_timer_channel_stop VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_channel_stop)
277# define vsf_remap_timer_channel_ctrl VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_channel_ctrl)
278# define vsf_remap_timer_ctrl VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_ctrl)
279# define vsf_remap_timer_get_configuration VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_get_configuration)
281# define VSF_TIMER_CFG_IMP_REMAP_FUNCTIONS \
282 vsf_err_t vsf_imp_timer_init(vsf_imp_timer_t *timer_ptr, vsf_timer_cfg_t *cfg_ptr) \
284 VSF_HAL_ASSERT(timer_ptr != NULL); \
285 return vsf_remap_timer_init(timer_ptr, cfg_ptr); \
287 void vsf_imp_timer_fini(vsf_imp_timer_t *timer_ptr) \
289 VSF_HAL_ASSERT(timer_ptr != NULL); \
290 vsf_remap_timer_fini(timer_ptr); \
292 fsm_rt_t vsf_imp_timer_enable(vsf_imp_timer_t *timer_ptr) \
294 VSF_HAL_ASSERT(timer_ptr != NULL); \
295 return vsf_remap_timer_enable(timer_ptr); \
297 fsm_rt_t vsf_imp_timer_disable(vsf_imp_timer_t *timer_ptr) \
299 VSF_HAL_ASSERT(timer_ptr != NULL); \
300 return vsf_remap_timer_disable(timer_ptr); \
302 void vsf_imp_timer_irq_enable(vsf_imp_timer_t *timer_ptr, vsf_timer_irq_mask_t irq_mask) \
304 VSF_HAL_ASSERT(timer_ptr != NULL); \
305 vsf_remap_timer_irq_enable(timer_ptr, irq_mask); \
307 void vsf_imp_timer_irq_disable(vsf_imp_timer_t *timer_ptr, vsf_timer_irq_mask_t irq_mask) \
309 VSF_HAL_ASSERT(timer_ptr != NULL); \
310 vsf_remap_timer_irq_disable(timer_ptr, irq_mask); \
312 vsf_timer_capability_t vsf_imp_timer_capability(vsf_imp_timer_t *timer_ptr) \
314 VSF_HAL_ASSERT(timer_ptr != NULL); \
315 return vsf_remap_timer_capability(timer_ptr); \
317 vsf_err_t vsf_imp_timer_pwm_set(vsf_imp_timer_t *timer_ptr, uint8_t channel, uint32_t period, uint32_t pulse) \
319 VSF_HAL_ASSERT(NULL != timer_ptr); \
320 return vsf_remap_timer_pwm_set(timer_ptr, channel, period, pulse); \
322 vsf_err_t vsf_imp_timer_channel_config(vsf_imp_timer_t *timer_ptr, uint8_t channel, \
323 vsf_timer_channel_cfg_t *cfg_ptr) \
325 VSF_HAL_ASSERT(NULL != timer_ptr); \
326 return vsf_remap_timer_channel_config(timer_ptr, channel, cfg_ptr); \
328 fsm_rt_t vsf_imp_timer_channel_start(vsf_imp_timer_t *timer_ptr, uint8_t channel) \
330 VSF_HAL_ASSERT(NULL != timer_ptr); \
331 return vsf_remap_timer_channel_start(timer_ptr, channel); \
333 fsm_rt_t vsf_imp_timer_channel_stop(vsf_imp_timer_t *timer_ptr, uint8_t channel) \
335 VSF_HAL_ASSERT(NULL != timer_ptr); \
336 return vsf_remap_timer_channel_stop(timer_ptr, channel); \
338 vsf_err_t vsf_imp_timer_channel_ctrl(vsf_imp_timer_t *timer_ptr, uint8_t channel, \
339 vsf_timer_channel_ctrl_t ctrl, void *param) \
341 VSF_HAL_ASSERT(NULL != timer_ptr); \
342 return vsf_remap_timer_channel_ctrl(timer_ptr, channel, ctrl, param); \
344 void vsf_imp_timer_ctrl(vsf_imp_timer_t *timer_ptr, uint_fast32_t ctrl_bit, bool level) \
346 VSF_HAL_ASSERT(NULL != timer_ptr); \
347 vsf_remap_timer_ctrl(timer_ptr, ctrl_bit, level); \
350 vsf_err_t vsf_imp_timer_get_configuration(vsf_imp_timer_t *timer_ptr, vsf_timer_cfg_t *cfg_ptr) \
352 VSF_HAL_ASSERT(timer_ptr != NULL); \
353 return vsf_remap_timer_get_configuration(timer_ptr, cfg_ptr); \
359#define VSF_HAL_TEMPLATE_IMP_NAME _timer
360#define VSF_HAL_TEMPLATE_IMP_UPCASE_NAME _TIMER
362#if !defined(VSF_TIMER_CFG_IMP_PREFIX) && !defined(VSF_TIMER_CFG_IMP_DEVICE_PREFIX)
363# error "Please define VSF_TIMER_CFG_IMP_PREFIX in timer driver"
366#if !defined(VSF_TIMER_CFG_IMP_UPCASE_PREFIX) && !defined(VSF_TIMER_CFG_IMP_DEVICE_UPCASE_PREFIX)
367# error "Please define VSF_TIMER_CFG_IMP_UPCASE_PREFIX in timer driver"
370#ifndef VSF_TIMER_CFG_IMP_COUNT_MASK_PREFIX
371# define VSF_TIMER_CFG_IMP_COUNT_MASK_PREFIX VSF_TIMER_CFG_IMP_UPCASE_PREFIX
374#ifdef VSF_TIMER_CFG_IMP_REMAP_FUNCTIONS
375# define VSF_HAL_CFG_IMP_REMAP_FUNCTIONS VSF_TIMER_CFG_IMP_REMAP_FUNCTIONS
380#undef VSF_TIMER_CFG_IMP_PREFIX
381#undef VSF_TIMER_CFG_IMP_COUNT_MASK_PREFIX
382#undef VSF_TIMER_CFG_IMP_UPCASE_PREFIX
383#undef VSF_TIMER_CFG_IMP_DEVICE_PREFIX
384#undef VSF_TIMER_CFG_IMP_DEVICE_UPCASE_PREFIX
385#undef VSF_TIMER_CFG_IMP_LV0
386#undef VSF_TIMER_CFG_IMP_REMAP_FUNCTIONS
387#undef VSF_TIMER_CFG_IMP_HAS_OP
388#undef VSF_TIMER_CFG_IMP_EXTERN_OP
390#undef vsf_imp_timer_t
391#undef vsf_imp_timer_init
392#undef vsf_imp_timer_fini
393#undef vsf_imp_timer_enable
394#undef vsf_imp_timer_disable
395#undef vsf_imp_timer_capability
396#undef vsf_imp_timer_irq_enable
397#undef vsf_imp_timer_irq_disable
398#undef vsf_imp_timer_channel_config
399#undef vsf_imp_timer_channel_start
400#undef vsf_imp_timer_channel_stop
401#undef vsf_imp_timer_channel_ctrl
402#undef vsf_imp_timer_ctrl
403#undef vsf_imp_timer_get_configuration
405#undef vsf_remap_timer_t
406#undef vsf_remap_timer_init
407#undef vsf_remap_timer_fini
408#undef vsf_remap_timer_enable
409#undef vsf_remap_timer_disable
410#undef vsf_remap_timer_capability
411#undef vsf_remap_timer_irq_enable
412#undef vsf_remap_timer_irq_disable
413#undef vsf_remap_timer_channel_config
414#undef vsf_remap_timer_channel_start
415#undef vsf_remap_timer_channel_stop
416#undef vsf_remap_timer_channel_ctrl
417#undef vsf_remap_timer_ctrl
418#undef vsf_remap_timer_get_configuration
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:599
vsf_timer_irq_mask_t irq_mask
Definition timer.h:232
timer configuration
Definition vsf_template_timer.h:499
Definition vsf_template_timer.h:510
Definition vsf_template_timer.h:562
TIMER status information structure Contains the current status of TIMER operations.
Definition vsf_template_timer.h:589
#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:534
vsf_timer_channel_ctrl_t
Predefined VSF TIMER control command that can be reimplemented in specific hal drivers....
Definition vsf_template_timer.h:556