VSF Documented
Data Structures | Macros | Typedefs | Functions
vsf_template_pwm.h File Reference
#include "./vsf_template_hal_driver.h"
#include "hal/arch/vsf_arch.h"

Go to the source code of this file.

Data Structures

struct  vsf_pwm_cfg_t
 PWM configuration structure. Used to configure the PWM generator's frequency settings. More...
 
struct  vsf_pwm_capability_t
 PWM capability structure. Describes the capabilities and limitations of the PWM hardware. More...
 
struct  vsf_pwm_op_t
 
struct  vsf_pwm_t
 

Macros

#define VSF_PWM_CFG_MULTI_CLASS   ENABLED
 Enable multi-class support by default for maximum availability.
 
#define VSF_PWM_CFG_PREFIX   vsf
 Convert count to mask in specific hardware driver.
 
#define VSF_PWM_CFG_FUNCTION_RENAME   ENABLED
 
#define VSF_PWM_CFG_REIMPLEMENT_TYPE_CFG   DISABLED
 Enable macro VSF_PWM_CFG_REIMPLEMENT_TYPE_CFG in specific hardware drivers to redefine struct vsf_pwm_cfg_t. For compatibility, members should not be deleted when redefining. The vsf_pwm_isr_handler_t type also needs to be redefined.
 
#define VSF_PWM_CFG_REIMPLEMENT_TYPE_CAPABILITY   DISABLED
 Redefine struct vsf_pwm_capability_t. For compatibility, members should not be deleted when redefining.
 
#define VSF_PWM_CFG_INHERIT_HAL_CAPABILITY   ENABLED
 In specific hardware driver, we can enable macro VSF_PWM_CFG_INHERIT_HAL_CAPABILITY to inherit the structure vsf_peripheral_capability_t.
 
#define VSF_PWM_APIS(__prefix_name)
 PWM API template, used to generate PWM type, specific prefix function declarations, etc.
 

Typedefs

typedef struct vsf_pwm_cfg_t vsf_pwm_cfg_t
 PWM configuration structure. Used to configure the PWM generator's frequency settings.
 
typedef struct vsf_pwm_capability_t vsf_pwm_capability_t
 PWM capability structure. Describes the capabilities and limitations of the PWM hardware.
 
typedef struct vsf_pwm_t vsf_pwm_t
 
typedef struct vsf_pwm_op_t vsf_pwm_op_t
 

Functions

vsf_err_t vsf_pwm_init (vsf_pwm_t *pwm_ptr, vsf_pwm_cfg_t *cfg_ptr)
 Initialize a PWM instance.
 
void vsf_pwm_fini (vsf_pwm_t *pwm_ptr)
 Finalize a PWM instance.
 
fsm_rt_t vsf_pwm_enable (vsf_pwm_t *pwm_ptr)
 Enable PWM instance.
 
fsm_rt_t vsf_pwm_disable (vsf_pwm_t *pwm_ptr)
 Disable a PWM instance.
 
vsf_pwm_capability_t vsf_pwm_capability (vsf_pwm_t *pwm_ptr)
 Get the capability of PWM instance.
 
vsf_err_t vsf_pwm_set (vsf_pwm_t *pwm_ptr, uint8_t channel, uint32_t period, uint32_t pulse)
 PWM set the period width and pulse width for a channel.
 
uint32_t vsf_pwm_get_freq (vsf_pwm_t *pwm_ptr)
 PWM get clock frequency.
 
vsf_err_t vsf_pwm_set_ms (vsf_pwm_t *pwm_ptr, uint8_t channel, uint32_t period, uint32_t pulse)
 Set PWM period in milliseconds.
 
vsf_err_t vsf_pwm_set_us (vsf_pwm_t *pwm_ptr, uint8_t channel, uint32_t period, uint32_t pulse)
 Set PWM period in microseconds.
 
vsf_err_t vsf_pwm_set_ns (vsf_pwm_t *pwm_ptr, uint8_t channel, uint32_t period, uint32_t pulse)
 Set PWM period in nanoseconds.
 

Macro Definition Documentation

◆ VSF_PWM_CFG_MULTI_CLASS

#define VSF_PWM_CFG_MULTI_CLASS   ENABLED

Enable multi-class support by default for maximum availability.

◆ VSF_PWM_CFG_PREFIX

#define VSF_PWM_CFG_PREFIX   vsf

Convert count to mask in specific hardware driver.

Convert mask to count in specific hardware driver.

We can redefine macro VSF_PWM_CFG_PREFIX to specify a prefix to call a specific driver directly in the application code.

◆ VSF_PWM_CFG_FUNCTION_RENAME

#define VSF_PWM_CFG_FUNCTION_RENAME   ENABLED

◆ VSF_PWM_CFG_REIMPLEMENT_TYPE_CFG

#define VSF_PWM_CFG_REIMPLEMENT_TYPE_CFG   DISABLED

Enable macro VSF_PWM_CFG_REIMPLEMENT_TYPE_CFG in specific hardware drivers to redefine struct vsf_pwm_cfg_t. For compatibility, members should not be deleted when redefining. The vsf_pwm_isr_handler_t type also needs to be redefined.

◆ VSF_PWM_CFG_REIMPLEMENT_TYPE_CAPABILITY

#define VSF_PWM_CFG_REIMPLEMENT_TYPE_CAPABILITY   DISABLED

Redefine struct vsf_pwm_capability_t. For compatibility, members should not be deleted when redefining.

◆ VSF_PWM_CFG_INHERIT_HAL_CAPABILITY

#define VSF_PWM_CFG_INHERIT_HAL_CAPABILITY   ENABLED

In specific hardware driver, we can enable macro VSF_PWM_CFG_INHERIT_HAL_CAPABILITY to inherit the structure vsf_peripheral_capability_t.

◆ VSF_PWM_APIS

#define VSF_PWM_APIS (   __prefix_name)
Value:
__VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, pwm, init, VSF_MCONNECT(__prefix_name, _pwm_t) *pwm_ptr, vsf_pwm_cfg_t *cfg_ptr) \
__VSF_HAL_TEMPLATE_API(__prefix_name, void, pwm, fini, VSF_MCONNECT(__prefix_name, _pwm_t) *pwm_ptr) \
__VSF_HAL_TEMPLATE_API(__prefix_name, fsm_rt_t, pwm, enable, VSF_MCONNECT(__prefix_name, _pwm_t) *pwm_ptr) \
__VSF_HAL_TEMPLATE_API(__prefix_name, fsm_rt_t, pwm, disable, VSF_MCONNECT(__prefix_name, _pwm_t) *pwm_ptr) \
__VSF_HAL_TEMPLATE_API(__prefix_name, vsf_pwm_capability_t, pwm, capability, VSF_MCONNECT(__prefix_name, _pwm_t) *pwm_ptr) \
__VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, pwm, set, VSF_MCONNECT(__prefix_name, _pwm_t) *pwm_ptr, uint8_t channel, uint32_t period, uint32_t pulse)\
__VSF_HAL_TEMPLATE_API(__prefix_name, uint32_t, pwm, get_freq, VSF_MCONNECT(__prefix_name, _pwm_t) *pwm_ptr)
vsf_err_t
Definition __type.h:42
struct VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_t)
Definition flash.c:53
__le16 capability
Definition ieee80211.h:134
unsigned uint32_t
Definition stdint.h:9
unsigned char uint8_t
Definition stdint.h:5
PWM capability structure. Describes the capabilities and limitations of the PWM hardware.
Definition vsf_template_pwm.h:188
PWM configuration structure. Used to configure the PWM generator's frequency settings.
Definition vsf_template_pwm.h:154
fsm_rt_t
Definition vsf_fsm.h:315
#define __VSF_HAL_TEMPLATE_API
Definition vsf_template_instance_declaration.h:57

PWM API template, used to generate PWM type, specific prefix function declarations, etc.

Parameters
[in]__prefix_nameThe prefix used for generating PWM functions.

Typedef Documentation

◆ vsf_pwm_cfg_t

typedef struct vsf_pwm_cfg_t vsf_pwm_cfg_t

PWM configuration structure. Used to configure the PWM generator's frequency settings.

◆ vsf_pwm_capability_t

PWM capability structure. Describes the capabilities and limitations of the PWM hardware.

◆ vsf_pwm_t

typedef struct vsf_pwm_t vsf_pwm_t

◆ vsf_pwm_op_t

typedef struct vsf_pwm_op_t vsf_pwm_op_t

Function Documentation

◆ vsf_pwm_init()

vsf_err_t vsf_pwm_init ( vsf_pwm_t pwm_ptr,
vsf_pwm_cfg_t cfg_ptr 
)
extern

Initialize a PWM instance.

Parameters
[in]pwm_ptrpointer to structure vsf_pwm_t
[in]cfg_ptrpointer to configuration structure vsf_pwm_cfg_t
Returns
vsf_err_t: VSF_ERR_NONE if initialization successful, otherwise return error code
Note
It is not necessary to call vsf_pwm_fini() to deinitialize. vsf_pwm_init() should be called before any other PWM API except vsf_pwm_capability().

◆ vsf_pwm_fini()

void vsf_pwm_fini ( vsf_pwm_t pwm_ptr)
extern

Finalize a PWM instance.

Parameters
[in]pwm_ptra pointer to structure vsf_pwm_t
Returns
none

◆ vsf_pwm_enable()

fsm_rt_t vsf_pwm_enable ( vsf_pwm_t pwm_ptr)
extern

Enable PWM instance.

Parameters
[in]pwm_ptrpointer to structure vsf_pwm_t
Returns
fsm_rt_t: fsm_rt_cpl if PWM was enabled, fsm_rt_on_going if PWM is still enabling

◆ vsf_pwm_disable()

fsm_rt_t vsf_pwm_disable ( vsf_pwm_t pwm_ptr)
extern

Disable a PWM instance.

Parameters
[in]pwm_ptra pointer to structure vsf_pwm_t
Returns
fsm_rt_t: fsm_rt_cpl if PWM was disabled, fsm_rt_on_going if PWM is still disabling

◆ vsf_pwm_capability()

vsf_pwm_capability_t vsf_pwm_capability ( vsf_pwm_t pwm_ptr)
extern

Get the capability of PWM instance.

Parameters
[in]pwm_ptra pointer to structure vsf_pwm_t
Returns
vsf_pwm_capability_t: all capabilities of current PWM vsf_pwm_capability_t

◆ vsf_pwm_set()

vsf_err_t vsf_pwm_set ( vsf_pwm_t pwm_ptr,
uint8_t  channel,
uint32_t  period,
uint32_t  pulse 
)
extern

PWM set the period width and pulse width for a channel.

Parameters
[in]pwm_ptra pointer to structure vsf_pwm_t
[in]channelPWM channel
[in]periodPWM period width (in clock counter)
[in]pulsePWM pulse width (in clock counter)
Returns
vsf_err_t: VSF_ERR_NONE if the PWM set was successful, or a negative error code

◆ vsf_pwm_get_freq()

uint32_t vsf_pwm_get_freq ( vsf_pwm_t pwm_ptr)
extern

PWM get clock frequency.

Parameters
[in]pwm_ptra pointer to structure vsf_pwm_t
Returns
uint32_t: PWM clock frequency in Hz

◆ vsf_pwm_set_ms()

vsf_err_t vsf_pwm_set_ms ( vsf_pwm_t pwm_ptr,
uint8_t  channel,
uint32_t  period,
uint32_t  pulse 
)
extern

Set PWM period in milliseconds.

Parameters
[in]pwm_ptra pointer to structure vsf_pwm_t
[in]channelPWM channel
[in]periodPWM period width (in milliseconds)
[in]pulsePWM pulse width (in milliseconds)
Returns
vsf_err_t: VSF_ERR_NONE if the PWM set was successful, otherwise returns error code

◆ vsf_pwm_set_us()

vsf_err_t vsf_pwm_set_us ( vsf_pwm_t pwm_ptr,
uint8_t  channel,
uint32_t  period,
uint32_t  pulse 
)
extern

Set PWM period in microseconds.

Parameters
[in]pwm_ptra pointer to structure vsf_pwm_t
[in]channelPWM channel
[in]periodPWM period width (in microseconds)
[in]pulsePWM pulse width (in microseconds)
Returns
vsf_err_t: VSF_ERR_NONE if the PWM set was successful, otherwise returns error code

◆ vsf_pwm_set_ns()

vsf_err_t vsf_pwm_set_ns ( vsf_pwm_t pwm_ptr,
uint8_t  channel,
uint32_t  period,
uint32_t  pulse 
)
extern

Set PWM period in nanoseconds.

Parameters
[in]pwm_ptra pointer to structure vsf_pwm_t
[in]channelPWM channel
[in]periodPWM period width (in nanoseconds)
[in]pulsePWM pulse width (in nanoseconds)
Returns
vsf_err_t: VSF_ERR_NONE if the PWM set was successful, otherwise returns error code
Generated from commit: vsfteam/vsf@2b286be