VSF Documented
pwm_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_PWM == ENABLED
19
20/*============================ INCLUDES ======================================*/
21
22/*============================ MACROS ========================================*/
23
24#ifndef VSF_PWM_CFG_REIMPLEMENT_API_GET_CONFIGURATION
25# define VSF_PWM_CFG_REIMPLEMENT_API_GET_CONFIGURATION DISABLED
26#endif
27
28#ifndef VSF_PWM_CFG_REIMPLEMENT_API_CAPABILITY
29# define VSF_PWM_CFG_REIMPLEMENT_API_CAPABILITY DISABLED
30#endif
31
32#ifndef VSF_PWM_CFG_REIMPLEMENT_API_IRQ_ENABLE
33# define VSF_PWM_CFG_REIMPLEMENT_API_IRQ_ENABLE DISABLED
34#endif
35
36#ifndef VSF_PWM_CFG_REIMPLEMENT_API_IRQ_DISABLE
37# define VSF_PWM_CFG_REIMPLEMENT_API_IRQ_DISABLE DISABLED
38#endif
39
40#ifndef VSF_PWM_CFG_REIMPLEMENT_API_IRQ_CLEAR
41# define VSF_PWM_CFG_REIMPLEMENT_API_IRQ_CLEAR DISABLED
42#endif
43
44#ifndef VSF_PWM_CFG_REIMPLEMENT_API_CTRL
45# define VSF_PWM_CFG_REIMPLEMENT_API_CTRL DISABLED
46#endif
47
48#ifdef VSF_PWM_CFG_IMP_REMAP_PREFIX
49# undef VSF_PWM_CFG_REIMPLEMENT_API_CAPABILITY
50# define VSF_PWM_CFG_REIMPLEMENT_API_CAPABILITY ENABLED
51# undef VSF_PWM_CFG_REIMPLEMENT_API_GET_CONFIGURATION
52# define VSF_PWM_CFG_REIMPLEMENT_API_GET_CONFIGURATION ENABLED
53# undef VSF_PWM_CFG_REIMPLEMENT_API_CTRL
54# define VSF_PWM_CFG_REIMPLEMENT_API_CTRL ENABLED
55#endif
56
57#if VSF_PWM_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
58# ifndef VSF_PWM_CFG_CAPABILITY_MIN_FREQ
59# define VSF_PWM_CFG_CAPABILITY_MIN_FREQ (1ul * 1000)
60# endif
61# ifndef VSF_PWM_CFG_CAPABILITY_MAX_FREQ
62# define VSF_PWM_CFG_CAPABILITY_MAX_FREQ (10ul * 1000 * 1000)
63# endif
64#endif
65
66#if defined(VSF_PWM_CFG_IMP_RENAME_DEVICE_PREFIX) && (VSF_PWM_CFG_IMP_RENAME_DEVICE_PREFIX == ENABLED)
67# define vsf_real_pwm_t VSF_MCONNECT(VSF_PWM_CFG_IMP_DEVICE_PREFIX, _t)
68# define vsf_real_pwm_set VSF_MCONNECT(VSF_PWM_CFG_IMP_DEVICE_PREFIX, _set)
69# define vsf_real_pwm_get_freq VSF_MCONNECT(VSF_PWM_CFG_IMP_DEVICE_PREFIX, _get_freq)
70# define vsf_real_pwm_capability VSF_MCONNECT(VSF_PWM_CFG_IMP_DEVICE_PREFIX, _capability)
71# define vsf_real_pwm_irq_enable VSF_MCONNECT(VSF_PWM_CFG_IMP_DEVICE_PREFIX, _irq_enable)
72# define vsf_real_pwm_irq_disable VSF_MCONNECT(VSF_PWM_CFG_IMP_DEVICE_PREFIX, _irq_disable)
73# define vsf_real_pwm_irq_clear VSF_MCONNECT(VSF_PWM_CFG_IMP_DEVICE_PREFIX, _irq_clear)
74# define vsf_real_pwm_ctrl VSF_MCONNECT(VSF_PWM_CFG_IMP_DEVICE_PREFIX, _ctrl)
75# define vsf_real_pwm_get_configuration VSF_MCONNECT(VSF_PWM_CFG_IMP_DEVICE_PREFIX, _get_configuration)
76#else
77# define vsf_real_pwm_t VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_t)
78# define vsf_real_pwm_set VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_set)
79# define vsf_real_pwm_get_freq VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_get_freq)
80# define vsf_real_pwm_capability VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_capability)
81# define vsf_real_pwm_irq_enable VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_irq_enable)
82# define vsf_real_pwm_irq_disable VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_irq_disable)
83# define vsf_real_pwm_irq_clear VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_irq_clear)
84# define vsf_real_pwm_ctrl VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_ctrl)
85# define vsf_real_pwm_get_configuration VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_get_configuration)
86#endif
87
88/*============================ MACROFIED FUNCTIONS ===========================*/
89/*============================ TYPES =========================================*/
90/*============================ GLOBAL VARIABLES ==============================*/
91/*============================ LOCAL VARIABLES ===============================*/
92/*============================ PROTOTYPES ====================================*/
93/*============================ IMPLEMENTATION ================================*/
94
95#if VSF_PWM_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
96vsf_pwm_capability_t vsf_real_pwm_capability(vsf_real_pwm_t *pwm_ptr)
97{
98 vsf_pwm_capability_t pwm_capability = {
101 };
102
103 return pwm_capability;
104}
105#endif
106
107#if VSF_PWM_CFG_REIMPLEMENT_API_CTRL == DISABLED
108vsf_err_t vsf_real_pwm_ctrl(vsf_real_pwm_t *pwm_ptr, vsf_pwm_ctrl_t ctrl, void *param)
109{
110 VSF_HAL_ASSERT(NULL != pwm_ptr);
111
112 // Default implementation: not supported, trigger assertion
114
115 return VSF_ERR_NOT_SUPPORT;
116}
117#endif
118
119#if VSF_PWM_CFG_REIMPLEMENT_API_GET_CONFIGURATION == DISABLED
120vsf_err_t vsf_real_pwm_get_configuration(vsf_real_pwm_t *pwm_ptr, vsf_pwm_cfg_t *cfg_ptr)
121{
122 VSF_HAL_ASSERT(NULL != pwm_ptr);
123 VSF_HAL_ASSERT(NULL != cfg_ptr);
124 VSF_HAL_ASSERT(0); // Default implementation: not supported, trigger assertion
125 return VSF_ERR_NOT_SUPPORT;
126}
127#endif
128
129#if VSF_PWM_CFG_REIMPLEMENT_API_IRQ_ENABLE == DISABLED
130void vsf_real_pwm_irq_enable(vsf_real_pwm_t *pwm_ptr, vsf_pwm_irq_mask_t irq_mask)
131{
132 VSF_HAL_ASSERT(NULL != pwm_ptr);
134}
135#endif
136
137#if VSF_PWM_CFG_REIMPLEMENT_API_IRQ_DISABLE == DISABLED
138void vsf_real_pwm_irq_disable(vsf_real_pwm_t *pwm_ptr, vsf_pwm_irq_mask_t irq_mask)
139{
140 VSF_HAL_ASSERT(NULL != pwm_ptr);
142}
143#endif
144
145#if VSF_PWM_CFG_REIMPLEMENT_API_IRQ_CLEAR == DISABLED
146vsf_pwm_irq_mask_t vsf_real_pwm_irq_clear(vsf_real_pwm_t *pwm_ptr, vsf_pwm_irq_mask_t irq_mask)
147{
148 VSF_HAL_ASSERT(NULL != pwm_ptr);
150 return 0;
151}
152#endif
153
154/*============================ MACROS ========================================*/
155
156#undef VSF_PWM_CFG_REIMPLEMENT_TYPE_CAPABILITY
157#undef VSF_PWM_CFG_REIMPLEMENT_TYPE_CFG
158#undef VSF_PWM_CFG_REIMPLEMENT_TYPE_CTRL
159#undef VSF_PWM_CFG_REIMPLEMENT_API_CAPABILITY
160#undef VSF_PWM_CFG_REIMPLEMENT_API_IRQ_ENABLE
161#undef VSF_PWM_CFG_REIMPLEMENT_API_IRQ_DISABLE
162#undef VSF_PWM_CFG_REIMPLEMENT_API_IRQ_CLEAR
163#undef VSF_PWM_CFG_REIMPLEMENT_API_CTRL
164#undef VSF_PWM_CFG_REIMPLEMENT_API_GET_CONFIGURATION
165#undef VSF_PWM_CFG_CAPABILITY_MAX_FREQ
166#undef VSF_PWM_CFG_CAPABILITY_MIN_FREQ
167#undef vsf_real_pwm_t
168#undef vsf_real_pwm_set
169#undef vsf_real_pwm_get_freq
170#undef vsf_real_pwm_capability
171#undef vsf_real_pwm_irq_enable
172#undef vsf_real_pwm_irq_disable
173#undef vsf_real_pwm_irq_clear
174#undef vsf_real_pwm_ctrl
175#undef vsf_real_pwm_get_configuration
176
177/*============================ MACROS ========================================*/
178
179#ifdef VSF_PWM_CFG_IMP_REMAP_PREFIX
180
181# define vsf_imp_pwm_t VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_t)
182# define vsf_imp_pwm_init VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_init)
183# define vsf_imp_pwm_fini VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_fini)
184# define vsf_imp_pwm_enable VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_enable)
185# define vsf_imp_pwm_disable VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_disable)
186# define vsf_imp_pwm_capability VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_capability)
187# define vsf_imp_pwm_set VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_set)
188# define vsf_imp_pwm_get_freq VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_get_freq)
189# define vsf_imp_pwm_get_configuration VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_get_configuration)
190# define vsf_imp_pwm_irq_enable VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_irq_enable)
191# define vsf_imp_pwm_irq_disable VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_irq_disable)
192# define vsf_imp_pwm_irq_clear VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_irq_clear)
193# define vsf_imp_pwm_ctrl VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_ctrl)
194
195# define vsf_remap_pwm_t VSF_MCONNECT(VSF_PWM_CFG_IMP_REMAP_PREFIX, _pwm_t)
196# define vsf_remap_pwm_init VSF_MCONNECT(VSF_PWM_CFG_IMP_REMAP_PREFIX, _pwm_init)
197# define vsf_remap_pwm_fini VSF_MCONNECT(VSF_PWM_CFG_IMP_REMAP_PREFIX, _pwm_fini)
198# define vsf_remap_pwm_enable VSF_MCONNECT(VSF_PWM_CFG_IMP_REMAP_PREFIX, _pwm_enable)
199# define vsf_remap_pwm_disable VSF_MCONNECT(VSF_PWM_CFG_IMP_REMAP_PREFIX, _pwm_disable)
200# define vsf_remap_pwm_capability VSF_MCONNECT(VSF_PWM_CFG_IMP_REMAP_PREFIX, _pwm_capability)
201# define vsf_remap_pwm_set VSF_MCONNECT(VSF_PWM_CFG_IMP_REMAP_PREFIX, _pwm_set)
202# define vsf_remap_pwm_get_freq VSF_MCONNECT(VSF_PWM_CFG_IMP_REMAP_PREFIX, _pwm_get_freq)
203# define vsf_remap_pwm_get_configuration VSF_MCONNECT(VSF_PWM_CFG_IMP_REMAP_PREFIX, _pwm_get_configuration)
204# define vsf_remap_pwm_irq_enable VSF_MCONNECT(VSF_PWM_CFG_IMP_REMAP_PREFIX, _pwm_irq_enable)
205# define vsf_remap_pwm_irq_disable VSF_MCONNECT(VSF_PWM_CFG_IMP_REMAP_PREFIX, _pwm_irq_disable)
206# define vsf_remap_pwm_irq_clear VSF_MCONNECT(VSF_PWM_CFG_IMP_REMAP_PREFIX, _pwm_irq_clear)
207# define vsf_remap_pwm_ctrl VSF_MCONNECT(VSF_PWM_CFG_IMP_REMAP_PREFIX, _pwm_ctrl)
208
209# define VSF_PWM_CFG_IMP_REMAP_FUNCTIONS \
210 vsf_err_t vsf_imp_pwm_init(vsf_imp_pwm_t *pwm_ptr, vsf_pwm_cfg_t *cfg_ptr) \
211 { \
212 VSF_HAL_ASSERT(pwm_ptr != NULL); \
213 return vsf_remap_pwm_init(pwm_ptr, cfg_ptr); \
214 } \
215 void vsf_imp_pwm_fini(vsf_imp_pwm_t *pwm_ptr) \
216 { \
217 VSF_HAL_ASSERT(pwm_ptr != NULL); \
218 vsf_remap_pwm_fini(pwm_ptr); \
219 } \
220 fsm_rt_t vsf_imp_pwm_enable(vsf_imp_pwm_t *pwm_ptr) \
221 { \
222 VSF_HAL_ASSERT(pwm_ptr != NULL); \
223 return vsf_remap_pwm_enable(pwm_ptr); \
224 } \
225 fsm_rt_t vsf_imp_pwm_disable(vsf_imp_pwm_t *pwm_ptr) \
226 { \
227 VSF_HAL_ASSERT(pwm_ptr != NULL); \
228 return vsf_remap_pwm_disable(pwm_ptr); \
229 } \
230 vsf_pwm_capability_t vsf_imp_pwm_capability(vsf_imp_pwm_t *pwm_ptr) \
231 { \
232 VSF_HAL_ASSERT(pwm_ptr != NULL); \
233 return vsf_remap_pwm_capability(pwm_ptr); \
234 } \
235 vsf_err_t vsf_imp_pwm_set(vsf_imp_pwm_t *pwm_ptr, uint8_t channel, \
236 uint32_t period, uint32_t pulse) \
237 { \
238 VSF_HAL_ASSERT(pwm_ptr != NULL); \
239 return vsf_remap_pwm_set(pwm_ptr, channel, period, pulse); \
240 } \
241 uint32_t vsf_imp_pwm_get_freq(vsf_imp_pwm_t *pwm_ptr) \
242 { \
243 VSF_HAL_ASSERT(pwm_ptr != NULL); \
244 return vsf_remap_pwm_get_freq(pwm_ptr); \
245 } \
246 \
247 vsf_err_t vsf_imp_pwm_get_configuration(vsf_imp_pwm_t *pwm_ptr, vsf_pwm_cfg_t *cfg_ptr) \
248 { \
249 VSF_HAL_ASSERT(pwm_ptr != NULL); \
250 return vsf_remap_pwm_get_configuration(pwm_ptr, cfg_ptr); \
251 } \
252 void vsf_imp_pwm_irq_enable(vsf_imp_pwm_t *pwm_ptr, vsf_pwm_irq_mask_t irq_mask) \
253 { \
254 VSF_HAL_ASSERT(pwm_ptr != NULL); \
255 vsf_remap_pwm_irq_enable(pwm_ptr, irq_mask); \
256 } \
257 void vsf_imp_pwm_irq_disable(vsf_imp_pwm_t *pwm_ptr, vsf_pwm_irq_mask_t irq_mask) \
258 { \
259 VSF_HAL_ASSERT(pwm_ptr != NULL); \
260 vsf_remap_pwm_irq_disable(pwm_ptr, irq_mask); \
261 } \
262 vsf_pwm_irq_mask_t vsf_imp_pwm_irq_clear(vsf_imp_pwm_t *pwm_ptr, vsf_pwm_irq_mask_t irq_mask) \
263 { \
264 VSF_HAL_ASSERT(pwm_ptr != NULL); \
265 return vsf_remap_pwm_irq_clear(pwm_ptr, irq_mask); \
266 } \
267 vsf_err_t vsf_imp_pwm_ctrl(vsf_imp_pwm_t *pwm_ptr, vsf_pwm_ctrl_t ctrl, void *param) \
268 { \
269 VSF_HAL_ASSERT(pwm_ptr != NULL); \
270 return vsf_remap_pwm_ctrl(pwm_ptr, ctrl, param); \
271 }
272#endif
273
274
275/*============================ GLOBAL VARIABLES ==============================*/
276
277#define VSF_HAL_TEMPLATE_IMP_NAME _pwm
278#define VSF_HAL_TEMPLATE_IMP_UPCASE_NAME _PWM
279
280#if !defined(VSF_PWM_CFG_IMP_PREFIX) && !defined(VSF_PWM_CFG_IMP_DEVICE_PREFIX)
281# error "Please define VSF_PWM_CFG_IMP_PREFIX in pwm driver"
282#endif
283
284#if !defined(VSF_PWM_CFG_IMP_UPCASE_PREFIX) && !defined(VSF_PWM_CFG_IMP_DEVICE_UPCASE_PREFIX)
285# error "Please define VSF_PWM_CFG_IMP_UPCASE_PREFIX in pwm driver"
286#endif
287
288#ifndef VSF_PWM_CFG_IMP_COUNT_MASK_PREFIX
289# define VSF_PWM_CFG_IMP_COUNT_MASK_PREFIX VSF_PWM_CFG_IMP_UPCASE_PREFIX
290#endif
291
292#ifdef VSF_PWM_CFG_IMP_REMAP_FUNCTIONS
293# define VSF_HAL_CFG_IMP_REMAP_FUNCTIONS VSF_PWM_CFG_IMP_REMAP_FUNCTIONS
294#endif
295
297
298#undef VSF_PWM_CFG_IMP_PREFIX
299#undef VSF_PWM_CFG_IMP_COUNT_MASK_PREFIX
300#undef VSF_PWM_CFG_IMP_UPCASE_PREFIX
301#undef VSF_PWM_CFG_IMP_DEVICE_PREFIX
302#undef VSF_PWM_CFG_IMP_DEVICE_UPCASE_PREFIX
303#undef VSF_PWM_CFG_IMP_LV0
304#undef VSF_PWM_CFG_IMP_REMAP_FUNCTIONS
305#undef VSF_PWM_CFG_IMP_HAS_OP
306#undef VSF_PWM_CFG_IMP_EXTERN_OP
307#undef VSF_PWM_CFG_IMP_RENAME_DEVICE_PREFIX
308
309#undef vsf_imp_pwm_t
310#undef vsf_imp_pwm_init
311#undef vsf_imp_pwm_fini
312#undef vsf_imp_pwm_enable
313#undef vsf_imp_pwm_disable
314#undef vsf_imp_pwm_capability
315#undef vsf_imp_pwm_set
316#undef vsf_imp_pwm_get_freq
317#undef vsf_imp_pwm_get_configuration
318#undef vsf_imp_pwm_irq_enable
319#undef vsf_imp_pwm_irq_disable
320#undef vsf_imp_pwm_irq_clear
321#undef vsf_imp_pwm_ctrl
322
323#undef vsf_remap_pwm_t
324#undef vsf_remap_pwm_init
325#undef vsf_remap_pwm_fini
326#undef vsf_remap_pwm_enable
327#undef vsf_remap_pwm_disable
328#undef vsf_remap_pwm_capability
329#undef vsf_remap_pwm_set
330#undef vsf_remap_pwm_get_freq
331#undef vsf_remap_pwm_get_configuration
332#undef vsf_remap_pwm_irq_enable
333#undef vsf_remap_pwm_irq_disable
334#undef vsf_remap_pwm_irq_clear
335#undef vsf_remap_pwm_ctrl
336
337#undef VSF_HAL_TEMPLATE_IMP_NAME
338#undef VSF_HAL_TEMPLATE_IMP_UPCASE_NAME
339
340/*============================ STATIC ASSERTIONS ==============================*/
341
342/* User-extensible macros for custom mode and IRQ mask values
343 * Users can define these macros before including this template to append
344 * their custom enum values to the uniqueness checks.
345 *
346 * Check modes for custom values:
347 * VSF_PWM_CFG_MODE_CHECK_UNIQUE - Check mode for custom mode values
348 * Default: VSF_HAL_CHECK_MODE_LOOSE (loose mode, no overlapping bits)
349 * Can be set to: VSF_HAL_CHECK_MODE_STRICT (strict mode, no overlapping bits)
350 * VSF_PWM_CFG_IRQ_MASK_CHECK_UNIQUE - Check mode for custom IRQ mask values
351 * Default: VSF_HAL_CHECK_MODE_STRICT (strict mode, no overlapping bits)
352 * Can be set to: VSF_HAL_CHECK_MODE_LOOSE (loose mode, no overlapping bits)
353 *
354 * Example usage in vendor driver:
355 * #define VSF_PWM_CUSTOM_MODE_VALUES MY_CUSTOM_MODE1, MY_CUSTOM_MODE2
356 * #define VSF_PWM_CFG_MODE_CHECK_UNIQUE VSF_HAL_CHECK_MODE_LOOSE
357 * #define VSF_PWM_CUSTOM_IRQ_MASK_VALUES MY_CUSTOM_IRQ1, MY_CUSTOM_IRQ2
358 * #define VSF_PWM_CFG_IRQ_MASK_CHECK_UNIQUE VSF_HAL_CHECK_MODE_STRICT
359 * #include "hal/driver/common/pwm/pwm_template.inc"
360 */
361
362
363#ifdef VSF_PWM_CFG_MODE_CHECK_UNIQUE
364/* Default mode lists - can be redefined by users before including this file */
365/* Note: PWM typically doesn't have mode enums, but custom modes can be added */
366
367#ifdef VSF_PWM_CUSTOM_MODE_VALUES
368/* Check uniqueness among custom mode values using user-specified check mode */
370#endif
371#endif /* VSF_PWM_CFG_MODE_CHECK_UNIQUE */
372
373/* ==================== IRQ MASK UNIQUENESS CHECKS ==================== */
374
375#ifdef VSF_PWM_CFG_IRQ_MASK_CHECK_UNIQUE
376
377#ifdef VSF_PWM_CUSTOM_IRQ_MASK_VALUES
378/* Check uniqueness among custom IRQ mask values using user-specified check mode */
380#endif
381
382/* Note: PWM typically doesn't have a standard IRQ mask enum, but custom IRQ masks can be added */
383#endif /* VSF_PWM_CFG_IRQ_MASK_CHECK_UNIQUE */
384
385#undef VSF_PWM_CFG_MODE_CHECK_UNIQUE
386#undef VSF_PWM_CFG_IRQ_MASK_CHECK_UNIQUE
387#undef VSF_PWM_CUSTOM_MODE_VALUES
388#undef VSF_PWM_CUSTOM_IRQ_MASK_VALUES
389
390#endif /* VSF_HAL_USE_PWM */
vsf_err_t
Definition __type.h:42
@ VSF_ERR_NOT_SUPPORT
function not supported
Definition __type.h:46
#define VSF_PWM_CFG_IRQ_MASK_CHECK_UNIQUE
Definition pwm.c:332
#define VSF_PWM_CFG_MODE_CHECK_UNIQUE
Definition pwm.c:331
#define VSF_PWM_CFG_CAPABILITY_MIN_FREQ
Definition aic_pwm.c:139
#define VSF_PWM_CFG_CAPABILITY_MAX_FREQ
Definition aic_pwm.c:138
#define NULL
Definition lvgl.h:26
const i_spi_t vsf_spi_irq_mask_t irq_mask
Definition spi_interface.h:38
PWM capability structure. Describes the capabilities and limitations of the PWM hardware.
Definition vsf_template_pwm.h:185
uint32_t min_freq
Minimum supported PWM frequency in Hz. The lower limit of the PWM generator's frequency range.
Definition vsf_template_pwm.h:208
Definition vsf_template_pwm.h:236
#define VSF_HAL_ASSERT(__CON)
all hal modules use this configuration file
Definition vsf_hal_cfg.h:36
vsf_pwm_irq_mask_t
Definition vsf_template_pwm.h:213
vsf_pwm_ctrl_t
PWM control commands for hardware-specific operations.
Definition vsf_template_pwm.h:254
#define VSF_HAL_CHECK_UNIQUE_CUSTOM(__CHECK_FUNC,...)
Definition vsf_template_static_assert_unique.h:2426
Generated from commit: vsfteam/vsf@66b3c4c