18#ifndef __VSF_TEMPLATE_TIMER_H__
19#define __VSF_TEMPLATE_TIMER_H__
38#ifndef VSF_TIMER_CFG_MULTI_CLASS
39# define VSF_TIMER_CFG_MULTI_CLASS ENABLED
50#if defined(VSF_HW_TIMER_COUNT) && !defined(VSF_HW_TIMER_MASK)
51# define VSF_HW_TIMER_MASK VSF_HAL_COUNT_TO_MASK(VSF_HW_TIMER_COUNT)
54#if defined(VSF_HW_TIMER_MASK) && !defined(VSF_HW_TIMER_COUNT)
55# define VSF_HW_TIMER_COUNT VSF_HAL_MASK_TO_COUNT(VSF_HW_TIMER_MASK)
64#ifndef VSF_TIMER_CFG_PREFIX
65# if VSF_TIMER_CFG_MULTI_CLASS == ENABLED
66# define VSF_TIMER_CFG_PREFIX vsf
67# elif defined(VSF_HW_TIMER_COUNT) && (VSF_HW_TIMER_COUNT != 0)
68# define VSF_TIMER_CFG_PREFIX vsf_hw
70# define VSF_TIMER_CFG_PREFIX vsf
80#ifndef VSF_TIMER_CFG_FUNCTION_RENAME
81# define VSF_TIMER_CFG_FUNCTION_RENAME ENABLED
92#ifndef VSF_TIMER_CFG_REIMPLEMENT_TYPE_IRQ_MASK
93# define VSF_TIMER_CFG_REIMPLEMENT_TYPE_IRQ_MASK DISABLED
106#ifndef VSF_TIMER_CFG_REIMPLEMENT_TYPE_CFG
107# define VSF_TIMER_CFG_REIMPLEMENT_TYPE_CFG DISABLED
118#ifndef VSF_TIMER_CFG_REIMPLEMENT_TYPE_CHANNEL_MODE
119# define VSF_TIMER_CFG_REIMPLEMENT_TYPE_CHANNEL_MODE DISABLED
131#ifndef VSF_TIMER_CFG_REIMPLEMENT_TYPE_CHANNEL_CFG
132# define VSF_TIMER_CFG_REIMPLEMENT_TYPE_CHANNEL_CFG DISABLED
144#ifndef VSF_TIMER_CFG_REIMPLEMENT_TYPE_CHANNEL_REQUEST
145# define VSF_TIMER_CFG_REIMPLEMENT_TYPE_CHANNEL_REQUEST DISABLED
156#ifndef VSF_TIMER_CFG_REIMPLEMENT_TYPE_STATUS
157# define VSF_TIMER_CFG_REIMPLEMENT_TYPE_STATUS DISABLED
168#ifndef VSF_TIMER_CFG_REIMPLEMENT_TYPE_CTRL
169# define VSF_TIMER_CFG_REIMPLEMENT_TYPE_CTRL DISABLED
180#ifndef VSF_TIMER_CFG_REIMPLEMENT_TYPE_CHANNEL_CTRL
181# define VSF_TIMER_CFG_REIMPLEMENT_TYPE_CHANNEL_CTRL DISABLED
193#ifndef VSF_TIMER_CFG_REIMPLEMENT_TYPE_CAPABILITY
194# define VSF_TIMER_CFG_REIMPLEMENT_TYPE_CAPABILITY DISABLED
204#ifndef VSF_TIMER_CFG_INHERIT_HAL_CAPABILITY
205# define VSF_TIMER_CFG_INHERIT_HAL_CAPABILITY ENABLED
241#ifndef __VSF_TIMER_CFG_SUPPORT_STANDARD_OPTIONAL
242# define __VSF_TIMER_CFG_SUPPORT_STANDARD_OPTIONAL DISABLED
253#define VSF_TIMER_APIS(__prefix_name) \
254 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, timer, init, VSF_MCONNECT(__prefix_name, _t) *timer_ptr, vsf_timer_cfg_t *cfg_ptr) \
255 __VSF_HAL_TEMPLATE_API(__prefix_name, void, timer, fini, VSF_MCONNECT(__prefix_name, _t) *timer_ptr) \
256 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, timer, get_configuration, VSF_MCONNECT(__prefix_name, _t) *timer_ptr, vsf_timer_cfg_t *cfg_ptr) \
257 __VSF_HAL_TEMPLATE_API(__prefix_name, fsm_rt_t, timer, enable, VSF_MCONNECT(__prefix_name, _t) *timer_ptr) \
258 __VSF_HAL_TEMPLATE_API(__prefix_name, fsm_rt_t, timer, disable, VSF_MCONNECT(__prefix_name, _t) *timer_ptr) \
259 __VSF_HAL_TEMPLATE_API(__prefix_name, void, timer, irq_enable, VSF_MCONNECT(__prefix_name, _t) *timer_ptr, vsf_timer_irq_mask_t irq_mask) \
260 __VSF_HAL_TEMPLATE_API(__prefix_name, void, timer, irq_disable, VSF_MCONNECT(__prefix_name, _t) *timer_ptr, vsf_timer_irq_mask_t irq_mask) \
261 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_timer_irq_mask_t, timer, irq_clear, VSF_MCONNECT(__prefix_name, _t) *timer_ptr, vsf_timer_irq_mask_t irq_mask) \
262 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_timer_status_t, timer, status, VSF_MCONNECT(__prefix_name, _t) *timer_ptr) \
263 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_timer_capability_t, timer, capability, VSF_MCONNECT(__prefix_name, _t) *timer_ptr) \
264 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, timer, set_period, VSF_MCONNECT(__prefix_name, _t) *timer_ptr, uint32_t period) \
265 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, timer, ctrl, VSF_MCONNECT(__prefix_name, _t) *timer_ptr, vsf_timer_ctrl_t ctrl, void* param) \
266 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, timer, channel_config, VSF_MCONNECT(__prefix_name, _t) *timer_ptr, uint8_t channel, vsf_timer_channel_cfg_t *channel_cfg_ptr) \
267 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, timer, channel_start, VSF_MCONNECT(__prefix_name, _t) *timer_ptr, uint8_t channel) \
268 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, timer, channel_stop, VSF_MCONNECT(__prefix_name, _t) *timer_ptr, uint8_t channel) \
269 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, timer, channel_request_start, VSF_MCONNECT(__prefix_name, _t) *timer_ptr, uint8_t channel, vsf_timer_channel_request_t *request_ptr) \
270 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, timer, channel_request_stop, VSF_MCONNECT(__prefix_name, _t) *timer_ptr, uint8_t channel) \
271 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, timer, channel_ctrl, VSF_MCONNECT(__prefix_name, _t) *timer_ptr, uint8_t channel, vsf_timer_channel_ctrl_t ctrl, void* param)
275#if VSF_TIMER_CFG_REIMPLEMENT_TYPE_CHANNEL_MODE == DISABLED
323 VSF_TIMER_CHANNEL_MODE_PWM = (0x01 << 0),
324# define VSF_TIMER_CHANNEL_MODE_PWM VSF_TIMER_CHANNEL_MODE_PWM
332 VSF_TIMER_CHANNEL_MODE_OUTPUT_COMPARE = (0x02 << 0),
333# define VSF_TIMER_CHANNEL_MODE_OUTPUT_COMPARE VSF_TIMER_CHANNEL_MODE_OUTPUT_COMPARE
337 VSF_TIMER_CHANNEL_MODE_INPUT_CAPTURE = (0x03 << 0),
338# define VSF_TIMER_CHANNEL_MODE_INPUT_CAPTURE VSF_TIMER_CHANNEL_MODE_INPUT_CAPTURE
342 VSF_TIMER_CHANNEL_MODE_ENCODER = (0x04 << 0),
343# define VSF_TIMER_CHANNEL_MODE_ENCODER VSF_TIMER_CHANNEL_MODE_ENCODER
347 VSF_TIMER_CHANNEL_MODE_ONE_PULSE = (0x05 << 0),
348# define VSF_TIMER_CHANNEL_MODE_ONE_PULSE VSF_TIMER_CHANNEL_MODE_ONE_PULSE
352 VSF_TIMER_CHANNEL_MODE_HALL_SENSOR = (0x06 << 0),
353# define VSF_TIMER_CHANNEL_MODE_HALL_SENSOR VSF_TIMER_CHANNEL_MODE_HALL_SENSOR
369 VSF_TIMER_BASE_COUNTER_UP = (0x00 << 4),
370# define VSF_TIMER_BASE_COUNTER_UP VSF_TIMER_BASE_COUNTER_UP
371 VSF_TIMER_BASE_COUNTER_DOWN = (0x01 << 4),
372# define VSF_TIMER_BASE_COUNTER_DOWN VSF_TIMER_BASE_COUNTER_DOWN
373 VSF_TIMER_BASE_COUNTER_CENTER_ALIGNED1 = (0x02 << 4),
374# define VSF_TIMER_BASE_COUNTER_CENTER_ALIGNED1 VSF_TIMER_BASE_COUNTER_CENTER_ALIGNED1
375 VSF_TIMER_BASE_COUNTER_CENTER_ALIGNED2 = (0x03 << 4),
376# define VSF_TIMER_BASE_COUNTER_CENTER_ALIGNED2 VSF_TIMER_BASE_COUNTER_CENTER_ALIGNED2
377 VSF_TIMER_BASE_COUNTER_CENTER_ALIGNED3 = (0x04 << 4),
378# define VSF_TIMER_BASE_COUNTER_CENTER_ALIGNED3 VSF_TIMER_BASE_COUNTER_CENTER_ALIGNED3
382 VSF_TIEMR_BASE_CLOCKDIVISION_DIV_1 = (0x00 << 8),
383# define VSF_TIEMR_BASE_CLOCKDIVISION_DIV_1 VSF_TIEMR_BASE_CLOCKDIVISION_DIV_1
384 VSF_TIEMR_BASE_CLOCKDIVISION_DIV_2 = (0x01 << 8),
385# define VSF_TIEMR_BASE_CLOCKDIVISION_DIV_2 VSF_TIEMR_BASE_CLOCKDIVISION_DIV_2
386 VSF_TIEMR_BASE_CLOCKDIVISION_DIV_4 = (0x02 << 8),
387# define VSF_TIEMR_BASE_CLOCKDIVISION_DIV_4 VSF_TIEMR_BASE_CLOCKDIVISION_DIV_4
395 VSF_TIMER_OUTPUT_COMPARE_ACTIVE = (0x00 << 4),
396# define VSF_TIMER_OUTPUT_COMPARE_ACTIVE VSF_TIMER_OUTPUT_COMPARE_ACTIVE
397 VSF_TIMER_OUTPUT_COMPARE_INACTIVE = (0x01 << 4),
398# define VSF_TIMER_OUTPUT_COMPARE_INACTIVE VSF_TIMER_OUTPUT_COMPARE_INACTIVE
399 VSF_TIMER_OUTPUT_COMPARE_TOGGLE = (0x02 << 4),
400# define VSF_TIMER_OUTPUT_COMPARE_TOGGLE VSF_TIMER_OUTPUT_COMPARE_TOGGLE
401 VSF_TIMER_OUTPUT_COMPARE_PWM1 = (0x03 << 4),
402# define VSF_TIMER_OUTPUT_COMPARE_PWM1 VSF_TIMER_OUTPUT_COMPARE_PWM1
403 VSF_TIMER_OUTPUT_COMPARE_PWM2 = (0x04 << 4),
404# define VSF_TIMER_OUTPUT_COMPARE_PWM2 VSF_TIMER_OUTPUT_COMPARE_PWM2
405 VSF_TIMER_OUTPUT_COMPARE_FORCED_ACTIVE = (0x05 << 4),
406# define VSF_TIMER_OUTPUT_COMPARE_FORCED_ACTIVE VSF_TIMER_OUTPUT_COMPARE_FORCED_ACTIVE
407 VSF_TIMER_OUTPUT_COMPARE_FORCED_INACTIVE = (0x06 << 4),
408# define VSF_TIMER_OUTPUT_COMPARE_FORCED_INACTIVE VSF_TIMER_OUTPUT_COMPARE_FORCED_INACTIVE
416 VSF_TIMER_OUTPUT_COMPARE_POLARITY_HIGH = (0x00 << 8),
417# define VSF_TIMER_OUTPUT_COMPARE_POLARITY_HIGH VSF_TIMER_OUTPUT_COMPARE_POLARITY_HIGH
418 VSF_TIMER_OUTPUT_COMPARE_POLARITY_LOW = (0x01 << 8),
419# define VSF_TIMER_OUTPUT_COMPARE_POLARITY_LOW VSF_TIMER_OUTPUT_COMPARE_POLARITY_LOW
420 VSF_TIMER_OUTPUT_COMPARE_N_POLARITY_HIGH = (0x00 << 8),
421# define VSF_TIMER_OUTPUT_COMPARE_N_POLARITY_HIGH VSF_TIMER_OUTPUT_COMPARE_N_POLARITY_HIGH
422 VSF_TIMER_OUTPUT_COMPARE_N_POLARITY_LOW = (0x01 << 8),
423# define VSF_TIMER_OUTPUT_COMPARE_N_POLARITY_LOW VSF_TIMER_OUTPUT_COMPARE_N_POLARITY_LOW
431 VSF_TIMER_PWM_OUTPUT_POLARITY_HIGH = (0x00 << 4),
432# define VSF_TIMER_PWM_OUTPUT_POLARITY_HIGH VSF_TIMER_PWM_OUTPUT_POLARITY_HIGH
433 VSF_TIMER_PWM_OUTPUT_POLARITY_LOW = (0x01 << 4),
434# define VSF_TIMER_PWM_OUTPUT_POLARITY_LOW VSF_TIMER_PWM_OUTPUT_POLARITY_LOW
442 VSF_TIMER_INPUT_CAPTURE_POLARITY_RISING = (0x00 << 4),
443# define VSF_TIMER_INPUT_CAPTURE_POLARITY_RISING VSF_TIMER_INPUT_CAPTURE_POLARITY_RISING
444 VSF_TIMER_INPUT_CAPTURE_POLARITY_FALLING = (0x01 << 4),
445# define VSF_TIMER_INPUT_CAPTURE_POLARITY_FALLING VSF_TIMER_INPUT_CAPTURE_POLARITY_FALLING
446 VSF_TIMER_INPUT_CAPTURE_POLARITY_BOTH = (0x02 << 4),
447# define VSF_TIMER_INPUT_CAPTURE_POLARITY_BOTH VSF_TIMER_INPUT_CAPTURE_POLARITY_BOTH
451 VSF_TIMER_INPUT_CAPTURE_FILTER_MASK = (0x0F << 4),
452 VSF_TIMER_INPUT_CAPTURE_FILTER_OFFSET = 4,
455#if __VSF_TIMER_CFG_SUPPORT_STANDARD_OPTIONAL
462 VSF_TIMER_ENCODER_CHANNEL_A_POLARITY_RISING = (0x00 << 4),
463# define VSF_TIMER_ENCODER_CHANNEL_A_POLARITY_RISING VSF_TIMER_ENCODER_CHANNEL_A_POLARITY_RISING
464 VSF_TIMER_ENCODER_CHANNEL_A_POLARITY_FALLING = (0x01 << 4),
465# define VSF_TIMER_ENCODER_CHANNEL_A_POLARITY_FALLING VSF_TIMER_ENCODER_CHANNEL_A_POLARITY_FALLING
466 VSF_TIMER_ENCODER_CHANNEL_A_POLARITY_BOTH = (0x02 << 4),
467# define VSF_TIMER_ENCODER_CHANNEL_A_POLARITY_BOTH VSF_TIMER_ENCODER_CHANNEL_A_POLARITY_BOTH
468 VSF_TIMER_ENCODER_CHANNEL_B_POLARITY_RISING = (0x00 << 6),
469# define VSF_TIMER_ENCODER_CHANNEL_B_POLARITY_RISING VSF_TIMER_ENCODER_CHANNEL_B_POLARITY_RISING
470 VSF_TIMER_ENCODER_CHANNEL_B_POLARITY_FALLING = (0x01 << 6),
471# define VSF_TIMER_ENCODER_CHANNEL_B_POLARITY_FALLING VSF_TIMER_ENCODER_CHANNEL_B_POLARITY_FALLING
472 VSF_TIMER_ENCODER_CHANNEL_B_POLARITY_BOTH = (0x02 << 6),
473# define VSF_TIMER_ENCODER_CHANNEL_B_POLARITY_BOTH VSF_TIMER_ENCODER_CHANNEL_B_POLARITY_BOTH
479#ifndef VSF_TIMER_CHANNEL_MODE_MASK
481#ifdef VSF_TIMER_CHANNEL_MODE_PWM
482 | VSF_TIMER_CHANNEL_MODE_PWM
484#ifdef VSF_TIMER_CHANNEL_MODE_OUTPUT_COMPARE
485 | VSF_TIMER_CHANNEL_MODE_OUTPUT_COMPARE
487#ifdef VSF_TIMER_CHANNEL_MODE_INPUT_CAPTURE
488 | VSF_TIMER_CHANNEL_MODE_INPUT_CAPTURE
490#ifdef VSF_TIMER_CHANNEL_MODE_ENCODER
491 | VSF_TIMER_CHANNEL_MODE_ENCODER
493#ifdef VSF_TIMER_CHANNEL_MODE_ONE_PULSE
494 | VSF_TIMER_CHANNEL_MODE_ONE_PULSE
496#ifdef VSF_TIMER_CHANNEL_MODE_HALL_SENSOR
497 | VSF_TIMER_CHANNEL_MODE_HALL_SENSOR
502#ifndef VSF_TIMER_BASE_COUNTER_MASK
507#ifndef VSF_TIMER_CHANNEL_MODE_ALL_MASK
513#if VSF_TIMER_CFG_REIMPLEMENT_TYPE_IRQ_MASK == DISABLED
543#if VSF_TIMER_CFG_REIMPLEMENT_TYPE_CFG == DISABLED
574#if VSF_TIMER_CFG_REIMPLEMENT_TYPE_CHANNEL_CFG == DISABLED
582#if VSF_TIMER_CFG_REIMPLEMENT_TYPE_CTRL == DISABLED
621#if VSF_TIMER_CFG_REIMPLEMENT_TYPE_CHANNEL_CTRL == DISABLED
643#if VSF_TIMER_CFG_REIMPLEMENT_TYPE_CHANNEL_CFG == DISABLED
670#if VSF_TIMER_CFG_REIMPLEMENT_TYPE_STATUS == DISABLED
680#if VSF_TIMER_CFG_REIMPLEMENT_TYPE_CAPABILITY == DISABLED
682#if VSF_TIMER_CFG_INHERIT_HAL_CAPABILITY == ENABLED
704#undef __VSF_HAL_TEMPLATE_API
705#define __VSF_HAL_TEMPLATE_API VSF_HAL_TEMPLATE_API_FP
711#if VSF_TIMER_CFG_MULTI_CLASS == ENABLED
1050#if VSF_TIMER_CFG_FUNCTION_RENAME == ENABLED
1051# define __vsf_timer_t VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_t)
1052# define vsf_timer_init(__TIME, ...) VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_init) ((__vsf_timer_t *)(__TIME), ##__VA_ARGS__)
1053# define vsf_timer_fini(__TIME) VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_fini) ((__vsf_timer_t *)(__TIME))
1054# define vsf_timer_enable(__TIME) VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_enable) ((__vsf_timer_t *)(__TIME))
1055# define vsf_timer_disable(__TIME) VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_disable) ((__vsf_timer_t *)(__TIME))
1056# define vsf_timer_status(__TIMER) VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_status) ((__vsf_timer_t *)(__TIMER))
1057# define vsf_timer_capability(__TIME) VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_capability) ((__vsf_timer_t *)(__TIME))
1058# define vsf_timer_get_configuration(__TIME, ...) VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_get_configuration) ((__vsf_timer_t *)(__TIME), ##__VA_ARGS__)
1059# define vsf_timer_irq_enable(__TIME, ...) VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_irq_enable) ((__vsf_timer_t *)(__TIME), ##__VA_ARGS__)
1060# define vsf_timer_irq_disable(__TIME, ...) VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_irq_disable) ((__vsf_timer_t *)(__TIME), ##__VA_ARGS__)
1061# define vsf_timer_irq_clear(__TIME, ...) VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_irq_clear) ((__vsf_timer_t *)(__TIME), ##__VA_ARGS__)
1062# define vsf_timer_set_period(__TIME, ...) VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_set_period) ((__vsf_timer_t *)(__TIME), ##__VA_ARGS__)
1063# define vsf_timer_ctrl(__TIME, ...) VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_ctrl) ((__vsf_timer_t *)(__TIME), ##__VA_ARGS__)
1064# define vsf_timer_channel_config(__TIME, ...) VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_channel_config) ((__vsf_timer_t *)(__TIME), ##__VA_ARGS__)
1065# define vsf_timer_channel_start(__TIME, ...) VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_channel_start) ((__vsf_timer_t *)(__TIME), ##__VA_ARGS__)
1066# define vsf_timer_channel_stop(__TIME, ...) VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_channel_stop) ((__vsf_timer_t *)(__TIME), ##__VA_ARGS__)
1067# define vsf_timer_channel_request_start(__TIME, ...) VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_channel_request_start)((__vsf_timer_t *)(__TIME), ##__VA_ARGS__)
1068# define vsf_timer_channel_request_stop(__TIME, ...) VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_channel_request_stop) ((__vsf_timer_t *)(__TIME), ##__VA_ARGS__)
1069# define vsf_timer_channel_ctrl(__TIME, ...) VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_channel_ctrl) ((__vsf_timer_t *)(__TIME), ##__VA_ARGS__)
vsf_err_t
Definition __type.h:42
vsf_arch_prio_t
Definition cortex_a_generic.h:88
vsf_timer_irq_mask_t
Definition timer.h:131
vsf_timer_channel_mode_t
Definition timer.h:121
void vsf_timer_isr_handler_t(void *target_ptr, vsf_timer_t *timer_ptr, vsf_timer_irq_mask_t irq_mask)
Definition timer.h:159
const i_spi_t vsf_spi_irq_mask_t irq_mask
Definition spi_interface.h:38
unsigned short uint16_t
Definition stdint.h:7
unsigned uint32_t
Definition stdint.h:9
unsigned char uint8_t
Definition stdint.h:5
Definition vsf_template_hal_driver.h:204
Definition vsf_template_hal_driver.h:197
Definition vsf_template_timer.h:681
uint8_t support_output_compare
Definition vsf_template_timer.h:696
uint8_t timer_bitlen
Definition vsf_template_timer.h:689
vsf_timer_irq_mask_t irq_mask
Definition timer.h:231
inherit(vsf_peripheral_capability_t) vsf_timer_irq_mask_t irq_mask
uint8_t support_one_pulse
Definition vsf_template_timer.h:698
uint8_t channel_cnt
Definition vsf_template_timer.h:691
uint8_t support_input_capture
Definition vsf_template_timer.h:697
uint8_t support_pwm
Definition vsf_template_timer.h:695
timer configuration
Definition vsf_template_timer.h:564
uint32_t freq
Definition vsf_template_timer.h:567
uint32_t min_freq
Definition vsf_template_timer.h:568
uint32_t period
Period in Tick.
Definition vsf_template_timer.h:565
vsf_timer_isr_t isr
ISR config.
Definition vsf_template_timer.h:570
Definition vsf_template_timer.h:575
vsf_timer_channel_mode_t mode
Definition vsf_template_timer.h:576
uint32_t pulse
Definition vsf_template_timer.h:577
Definition vsf_template_timer.h:644
uint16_t length
Definition vsf_template_timer.h:645
uint32_t * pulse_buffer
Definition vsf_template_timer.h:650
uint32_t * channel_a_buffer
Definition vsf_template_timer.h:655
uint32_t * input_capture_buffer
Definition vsf_template_timer.h:652
uint32_t * channel_b_buffer
Definition vsf_template_timer.h:656
uint32_t * period_buffer
Definition vsf_template_timer.h:648
Definition vsf_template_timer.h:550
vsf_arch_prio_t prio
Definition vsf_template_timer.h:553
vsf_timer_isr_handler_t * handler_fn
Definition vsf_template_timer.h:551
void * target_ptr
Definition vsf_template_timer.h:552
Definition vsf_template_timer.h:702
TIMER status information structure Contains the current status of TIMER operations.
Definition vsf_template_timer.h:671
uint32_t value
Definition timer.h:219
Definition vsf_template_timer.h:712
const vsf_timer_op_t * op
Definition vsf_template_timer.h:713
fsm_rt_t
Definition vsf_fsm.h:315
struct vsf_timer_capability_t vsf_timer_capability_t
#define VSF_TIMER_APIS(__prefix_name)
Timer API template macros for generating timer function declarations and implementations.
Definition vsf_template_timer.h:253
void vsf_timer_fini(vsf_timer_t *timer_ptr)
Finalize a TIMER instance.
Definition timer_common.c:45
#define __VSF_TIMER_CFG_SUPPORT_STANDARD_OPTIONAL
Enable standard optional features support.
Definition vsf_template_timer.h:242
vsf_timer_irq_mask_t
Definition vsf_template_timer.h:514
@ VSF_TIMER_IRQ_MASK_OVERFLOW
Definition vsf_template_timer.h:515
vsf_err_t vsf_timer_set_period(vsf_timer_t *timer_ptr, uint32_t period)
TIMER set period (maximum count), used for change the period of TIMER dynamically.
Definition timer_common.c:118
vsf_err_t vsf_timer_channel_stop(vsf_timer_t *timer_ptr, uint8_t channel)
stop a TIMER channel
Definition timer_common.c:155
vsf_timer_status_t vsf_timer_status(vsf_timer_t *timer_ptr)
Get the status of TIMER instance.
Definition timer_common.c:100
struct vsf_timer_channel_cfg_t vsf_timer_channel_cfg_t
struct vsf_timer_channel_request_t vsf_timer_channel_request_t
vsf_timer_irq_mask_t vsf_timer_irq_clear(vsf_timer_t *timer_ptr, vsf_timer_irq_mask_t irq_mask)
Clear interrupt flags of TIMER instance and return previous state.
Definition timer_common.c:91
vsf_timer_channel_mode_t
Predefined VSF Timer channel modes that can be reimplemented in specific HAL drivers.
Definition vsf_template_timer.h:303
@ VSF_TIMER_CHANNEL_MODE_BASE
Definition vsf_template_timer.h:306
@ VSF_TIMER_BASE_ONESHOT
Standard optional channel modes Note: These are standard optional features. This macro should NOT be ...
Definition vsf_template_timer.h:362
@ VSF_TIMER_BASE_CONTINUES
Definition vsf_template_timer.h:364
vsf_err_t vsf_timer_channel_request_stop(vsf_timer_t *timer_ptr, uint8_t channel)
stop a TIMER channel request.
vsf_timer_capability_t vsf_timer_capability(vsf_timer_t *timer_ptr)
get the capability of TIMER instance.
Definition timer_common.c:109
vsf_timer_ctrl_t
Predefined VSF TIMER control command that can be reimplemented in specific hal drivers....
Definition vsf_template_timer.h:599
@ __VSF_TIMER_CTRL_DUMMY
Dummy value for compilation, required when no actual control commands are defined.
Definition vsf_template_timer.h:617
struct vsf_timer_isr_t vsf_timer_isr_t
void vsf_timer_isr_handler_t(void *target_ptr, vsf_timer_t *timer_ptr, vsf_timer_irq_mask_t irq_mask)
Definition vsf_template_timer.h:546
void vsf_timer_irq_enable(vsf_timer_t *timer_ptr, vsf_timer_irq_mask_t irq_mask)
Enable interrupt masks of TIMER instance.
Definition timer_common.c:72
vsf_err_t vsf_timer_channel_ctrl(vsf_timer_t *timer_ptr, uint8_t channel, vsf_timer_channel_ctrl_t ctrl, void *param)
Execute a control command on the TIMER channel.
Definition timer_common.c:164
vsf_err_t vsf_timer_channel_request_start(vsf_timer_t *timer_ptr, uint8_t channel, vsf_timer_channel_request_t *request_ptr)
start a TIMER channel request (usually based on DMA)
vsf_err_t vsf_timer_get_configuration(vsf_timer_t *timer_ptr, vsf_timer_cfg_t *cfg_ptr)
Get the current configuration of a TIMER instance.
Definition timer_common.c:174
vsf_err_t vsf_timer_ctrl(vsf_timer_t *timer_ptr, vsf_timer_ctrl_t ctrl, void *param)
Execute a control command on the TIMER instance.
Definition timer_common.c:127
void vsf_timer_irq_disable(vsf_timer_t *timer_ptr, vsf_timer_irq_mask_t irq_mask)
Disable interrupt masks of TIMER instance.
Definition timer_common.c:81
struct vsf_timer_status_t vsf_timer_status_t
TIMER status information structure Contains the current status of TIMER operations.
@ VSF_TIMER_IRQ_ALL_BITS_MASK
Definition vsf_template_timer.h:540
@ VSF_TIMER_IRQ_COUNT
Definition vsf_template_timer.h:539
vsf_err_t vsf_timer_init(vsf_timer_t *timer_ptr, vsf_timer_cfg_t *cfg_ptr)
Initialize a Timer instance.
Definition timer_common.c:37
struct vsf_timer_cfg_t vsf_timer_cfg_t
timer configuration
@ VSF_TIMER_CHANNEL_MODE_ALL_MASK
Definition vsf_template_timer.h:508
@ VSF_TIMER_CHANNEL_MODE_MASK
Definition vsf_template_timer.h:480
@ VSF_TIMER_BASE_COUNTER_MASK
Definition vsf_template_timer.h:503
fsm_rt_t vsf_timer_enable(vsf_timer_t *timer_ptr)
Enable a TIMER instance.
Definition timer_common.c:54
fsm_rt_t vsf_timer_disable(vsf_timer_t *timer_ptr)
Disable a TIMER instance.
Definition timer_common.c:63
vsf_timer_channel_ctrl_t
Predefined VSF TIMER control command that can be reimplemented in specific hal drivers....
Definition vsf_template_timer.h:638
@ __VSF_TIMER_CHANNEL_CTRL_DUMMY
Dummy value for compilation.
Definition vsf_template_timer.h:639
vsf_err_t vsf_timer_channel_config(vsf_timer_t *timer_ptr, uint8_t channel, vsf_timer_channel_cfg_t *channel_cfg_ptr)
TIMER set the period width and pulse width for a channel.
Definition timer_common.c:136
vsf_err_t vsf_timer_channel_start(vsf_timer_t *timer_ptr, uint8_t channel)
start a TIMER channel
Definition timer_common.c:146