22#if VSF_HAL_USE_GPIO == ENABLED
26#ifndef VSF_GPIO_CFG_RETAIN_DEFINED_PREFIX
27# define VSF_GPIO_CFG_RETAIN_DEFINED_PREFIX DISABLED
30#ifndef VSF_GPIO_CFG_REIMPLEMENT_API_SET_INPUT
31# define VSF_GPIO_CFG_REIMPLEMENT_API_SET_INPUT DISABLED
34#ifndef VSF_GPIO_CFG_REIMPLEMENT_API_SET_INPUT
35# define VSF_GPIO_CFG_REIMPLEMENT_API_SET_INPUT DISABLED
38#ifndef VSF_GPIO_CFG_REIMPLEMENT_API_SET_OUTPUT
39# define VSF_GPIO_CFG_REIMPLEMENT_API_SET_OUTPUT DISABLED
42#ifndef VSF_GPIO_CFG_REIMPLEMENT_API_SWITCH_DIRECTION
43# define VSF_GPIO_CFG_REIMPLEMENT_API_SWITCH_DIRECTION DISABLED
46#ifndef VSF_GPIO_CFG_REIMPLEMENT_API_SET
47# define VSF_GPIO_CFG_REIMPLEMENT_API_SET DISABLED
50#ifndef VSF_GPIO_CFG_REIMPLEMENT_API_CLEAR
51# define VSF_GPIO_CFG_REIMPLEMENT_API_CLEAR DISABLED
54#ifndef VSF_GPIO_CFG_REIMPLEMENT_API_OUTPUT_AND_SET
55# define VSF_GPIO_CFG_REIMPLEMENT_API_OUTPUT_AND_SET DISABLED
58#ifndef VSF_GPIO_CFG_REIMPLEMENT_API_OUTPUT_AND_CLEAR
59# define VSF_GPIO_CFG_REIMPLEMENT_API_OUTPUT_AND_CLEAR DISABLED
62#ifndef VSF_GPIO_CFG_REIMPLEMENT_API_PORTS_CONFIG_PIN
63# define VSF_GPIO_CFG_REIMPLEMENT_API_PORTS_CONFIG_PIN DISABLED
66#ifndef VSF_GPIO_CFG_REIMPLEMENT_API_PORTS_CONFIG_PINS
67# define VSF_GPIO_CFG_REIMPLEMENT_API_PORTS_CONFIG_PINS DISABLED
70#ifndef VSF_GPIO_CFG_CHANGE_DIR_FIRST
71# define VSF_GPIO_CFG_CHANGE_DIR_FIRST ENABLED
74#ifndef VSF_GPIO_CFG_CAPABILITY_SUPPORT_CONFIG_PIN
75# define VSF_GPIO_CFG_CAPABILITY_SUPPORT_CONFIG_PIN 1
78#ifndef VSF_GPIO_CFG_CAPABILITY_SUPPORT_OUTPUT_AND_SET
79# define VSF_GPIO_CFG_CAPABILITY_SUPPORT_OUTPUT_AND_SET 0
82#ifndef VSF_GPIO_CFG_CAPABILITY_SUPPORT_OUTPUT_AND_CLEAR
83# define VSF_GPIO_CFG_CAPABILITY_SUPPORT_OUTPUT_AND_CLEAR 0
86#ifndef VSF_GPIO_CFG_CAPABILITY_SUPPORT_INTERRUPT
87# define VSF_GPIO_CFG_CAPABILITY_SUPPORT_INTERRUPT 1
90#ifndef VSF_GPIO_CFG_REIMPLEMENT_API_CAPABILITY
91# define VSF_GPIO_CFG_REIMPLEMENT_API_CAPABILITY DISABLED
94#ifdef VSF_GPIO_CFG_IMP_REMAP_PREFIX
95# undef VSF_GPIO_CFG_REIMPLEMENT_API_SET_INPUT
96# undef VSF_GPIO_CFG_REIMPLEMENT_API_SET_OUTPUT
97# undef VSF_GPIO_CFG_REIMPLEMENT_API_SWITCH_DIRECTION
98# undef VSF_GPIO_CFG_REIMPLEMENT_API_SET
99# undef VSF_GPIO_CFG_REIMPLEMENT_API_CLEAR
100# undef VSF_GPIO_CFG_REIMPLEMENT_API_OUTPUT_AND_SET
101# undef VSF_GPIO_CFG_REIMPLEMENT_API_OUTPUT_AND_CLEAR
102# undef VSF_GPIO_CFG_REIMPLEMENT_API_CAPABILITY
103# define VSF_GPIO_CFG_REIMPLEMENT_API_SET_INPUT ENABLED
104# define VSF_GPIO_CFG_REIMPLEMENT_API_SET_OUTPUT ENABLED
105# define VSF_GPIO_CFG_REIMPLEMENT_API_SWITCH_DIRECTION ENABLED
106# define VSF_GPIO_CFG_REIMPLEMENT_API_SET ENABLED
107# define VSF_GPIO_CFG_REIMPLEMENT_API_CLEAR ENABLED
108# define VSF_GPIO_CFG_REIMPLEMENT_API_OUTPUT_AND_SET ENABLED
109# define VSF_GPIO_CFG_REIMPLEMENT_API_OUTPUT_AND_CLEAR ENABLED
110# define VSF_GPIO_CFG_REIMPLEMENT_API_CAPABILITY ENABLED
113#if VSF_GPIO_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
114# ifndef VSF_GPIO_CFG_CAPABILITY_IS_ASYNC
115# define VSF_GPIO_CFG_CAPABILITY_IS_ASYNC 0
118# ifndef VSF_GPIO_CFG_CAPABILITY_PIN_COUNT
119# define VSF_GPIO_CFG_CAPABILITY_PIN_COUNT 32
121# ifndef VSF_GPIO_CFG_CAPABILITY_PIN_MASK
122# define VSF_GPIO_CFG_CAPABILITY_PIN_MASK 0xFFFFFFFF
126#ifndef VSF_GPIO_CFG_REAL_PREFIX
127# define VSF_GPIO_CFG_REAL_PREFIX VSF_GPIO_CFG_IMP_PREFIX
130#define vsf_real_gpios VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpios)
131#define vsf_real_gpio_t VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_t)
132#define vsf_real_gpio_port_config_pins VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_port_config_pins)
133#define vsf_real_gpio_set_input VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_set_input)
134#define vsf_real_gpio_set_output VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_set_output)
135#define vsf_real_gpio_get_direction VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_get_direction)
136#define vsf_real_gpio_set_direction VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_set_direction)
137#define vsf_real_gpio_switch_direction VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_switch_direction)
138#define vsf_real_gpio_write VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_write)
139#define vsf_real_gpio_set VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_set)
140#define vsf_real_gpio_clear VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_clear)
141#define vsf_real_gpio_output_and_set VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_output_and_set)
142#define vsf_real_gpio_output_and_clear VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_output_and_clear)
143#define vsf_real_gpio_capability VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_capability)
144#define vsf_real_gpio_port_config_pin VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_port_config_pin)
145#define vsf_real_gpio_ports_config_pin VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_ports_config_pin)
146#define vsf_real_gpio_ports_config_pins VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_ports_config_pins)
154#if VSF_GPIO_CFG_REIMPLEMENT_API_SET_INPUT == DISABLED
160 vsf_real_gpio_set_direction(gpio_ptr, pin_mask, 0);
164#if VSF_GPIO_CFG_REIMPLEMENT_API_SET_OUTPUT == DISABLED
170 vsf_real_gpio_set_direction(gpio_ptr, pin_mask, pin_mask);
174#if VSF_GPIO_CFG_REIMPLEMENT_API_SWITCH_DIRECTION == DISABLED
175void vsf_real_gpio_switch_direction(vsf_real_gpio_t *gpio_ptr,
vsf_gpio_pin_mask_t pin_mask)
180 uint32_t ret = ~vsf_real_gpio_get_direction(gpio_ptr, pin_mask);
181 vsf_real_gpio_set_direction(gpio_ptr, pin_mask, ret);
185#if VSF_GPIO_CFG_REIMPLEMENT_API_SET == DISABLED
191 vsf_real_gpio_write(gpio_ptr, pin_mask, pin_mask);
195#if VSF_GPIO_CFG_REIMPLEMENT_API_CLEAR == DISABLED
201 vsf_real_gpio_write(gpio_ptr, pin_mask, 0);
205#if VSF_GPIO_CFG_REIMPLEMENT_API_OUTPUT_AND_SET == DISABLED
211#if VSF_GPIO_CFG_CAPABILITY_SUPPORT_OUTPUT_AND_SET == 0
214#if VSF_GPIO_CFG_CHANGE_DIR_FIRST == ENABLED
215 vsf_real_gpio_set_output(gpio_ptr, pin_mask);
216 vsf_real_gpio_set(gpio_ptr, pin_mask);
218 vsf_real_gpio_set(gpio_ptr, pin_mask);
219 vsf_real_gpio_set_output(gpio_ptr, pin_mask);
225#if VSF_GPIO_CFG_REIMPLEMENT_API_OUTPUT_AND_CLEAR == DISABLED
226void vsf_real_gpio_output_and_clear(vsf_real_gpio_t *gpio_ptr,
vsf_gpio_pin_mask_t pin_mask)
231#if VSF_GPIO_CFG_CAPABILITY_SUPPORT_OUTPUT_AND_CLEAR == 0
234#if VSF_GPIO_CFG_CHANGE_DIR_FIRST == ENABLED
235 vsf_real_gpio_set_output(gpio_ptr, pin_mask);
236 vsf_real_gpio_clear(gpio_ptr, pin_mask);
238 vsf_real_gpio_clear(gpio_ptr, pin_mask);
239 vsf_real_gpio_set_output(gpio_ptr, pin_mask);
245#if VSF_GPIO_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
249 .is_async = VSF_GPIO_CFG_CAPABILITY_IS_ASYNC,
252 .support_interrupt = VSF_GPIO_CFG_CAPABILITY_SUPPORT_INTERRUPT,
253 .pin_count = VSF_GPIO_CFG_CAPABILITY_PIN_COUNT,
254 .pin_mask = VSF_GPIO_CFG_CAPABILITY_PIN_MASK,
257 return gpio_capability;
261#if VSF_GPIO_CFG_REIMPLEMENT_API_PORTS_CONFIG_PIN == DISABLED
268 for (
int i = 0; i < count; i++) {
271 .mode = cfg_ptr[i].mode,
273 uint16_t port_index = vsf_gpio_get_port(cfg_ptr[i].port_pin_index);
274 uint16_t pin_index = vsf_gpio_get_pin(cfg_ptr[i].port_pin_index);
275 vsf_real_gpio_t *gpio_ptr = vsf_real_gpios[port_index];
277 vsf_real_gpio_port_config_pins(gpio_ptr, 1 << pin_index, &cfg);
287#if VSF_GPIO_CFG_REIMPLEMENT_API_PORTS_CONFIG_PINS == DISABLED
294 for (
int i = 0; i < count; i++) {
295 uint16_t port_index = cfg_ptr[i].port_index;
296 vsf_real_gpio_t *gpio_ptr = vsf_real_gpios[port_index];
299 .mode = cfg_ptr[i].mode,
302 vsf_real_gpio_port_config_pins(gpio_ptr, cfg_ptr[i].pin_mask, &cfg);
314#undef VSF_GPIO_CFG_REIMPLEMENT_API_SET_INPUT
315#undef VSF_GPIO_CFG_REIMPLEMENT_API_SET_OUTPUT
316#undef VSF_GPIO_CFG_REIMPLEMENT_API_SWITCH_DIRECTION
317#undef VSF_GPIO_CFG_REIMPLEMENT_API_SET
318#undef VSF_GPIO_CFG_REIMPLEMENT_API_CLEAR
319#undef VSF_GPIO_CFG_REIMPLEMENT_API_OUTPUT_AND_SET
320#undef VSF_GPIO_CFG_REIMPLEMENT_API_OUTPUT_AND_CLEAR
321#undef VSF_GPIO_CFG_REIMPLEMENT_API_CAPABILITY
322#undef VSF_GPIO_CFG_REIMPLEMENT_API_PORTS_CONFIG_PIN
323#undef VSF_GPIO_CFG_REIMPLEMENT_API_PORTS_CONFIG_PINS
324#undef VSF_GPIO_CFG_CHANGE_DIR_FIRST
325#undef VSF_GPIO_CFG_CAPABILITY_SUPPORT_CONFIG_PIN
326#undef VSF_GPIO_CFG_CAPABILITY_SUPPORT_OUTPUT_AND_SET
327#undef VSF_GPIO_CFG_CAPABILITY_SUPPORT_OUTPUT_AND_CLEAR
328#undef VSF_GPIO_CFG_CAPABILITY_SUPPORT_INTERRUPT
329#undef VSF_GPIO_CFG_CAPABILITY_IS_ASYNC
330#undef VSF_GPIO_CFG_CAPABILITY_PIN_COUNT
331#undef VSF_GPIO_CFG_CAPABILITY_PIN_MASK
332#undef vsf_real_gpio_t
333#undef vsf_real_gpio_set_input
334#undef vsf_real_gpio_set_output
335#undef vsf_real_gpio_get_direction
336#undef vsf_real_gpio_set_direction
337#undef vsf_real_gpio_switch_direction
338#undef vsf_real_gpio_write
339#undef vsf_real_gpio_set
340#undef vsf_real_gpio_clear
341#undef vsf_real_gpio_output_and_set
342#undef vsf_real_gpio_output_and_clear
343#undef vsf_real_gpio_capability
347#ifdef VSF_GPIO_CFG_IMP_REMAP_PREFIX
348# ifndef VSF_GPIO_CFG_ORIGIN_PREFIX
349# define VSF_GPIO_CFG_ORIGIN_PREFIX VSF_GPIO_CFG_IMP_PREFIX
352# define vsf_origin_gpio_t VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_t)
353# define vsf_origin_gpio_capability VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_capability)
354# define vsf_origin_gpio_port_config_pins VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_port_config_pins)
355# define vsf_origin_gpio_set_direction VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_set_direction)
356# define vsf_origin_gpio_get_direction VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_get_direction)
357# define vsf_origin_gpio_set_input VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_set_input)
358# define vsf_origin_gpio_set_output VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_set_output)
359# define vsf_origin_gpio_switch_direction VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_switch_direction)
360# define vsf_origin_gpio_read VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_read)
361# define vsf_origin_gpio_write VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_write)
362# define vsf_origin_gpio_set VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_set)
363# define vsf_origin_gpio_clear VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_clear)
364# define vsf_origin_gpio_output_and_set VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_output_and_set)
365# define vsf_origin_gpio_output_and_clear VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_output_and_clear)
366# define vsf_origin_gpio_toggle VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_toggle)
367# define vsf_origin_gpio_exti_irq_enable VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_exti_irq_enable)
368# define vsf_origin_gpio_exti_irq_disable VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_exti_irq_disable)
369# define vsf_origin_gpio_exti_irq_config VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_exti_irq_config)
371# define vsf_remap_gpio_t VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_t)
372# define vsf_remap_gpio_capability VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_capability)
373# define vsf_remap_gpio_port_config_pins VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_port_config_pins)
374# define vsf_remap_gpio_set_direction VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_set_direction)
375# define vsf_remap_gpio_get_direction VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_get_direction)
376# define vsf_remap_gpio_set_input VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_set_input)
377# define vsf_remap_gpio_set_output VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_set_output)
378# define vsf_remap_gpio_switch_direction VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_switch_direction)
379# define vsf_remap_gpio_read VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_read)
380# define vsf_remap_gpio_write VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_write)
381# define vsf_remap_gpio_set VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_set)
382# define vsf_remap_gpio_clear VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_clear)
383# define vsf_remap_gpio_output_and_set VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_output_and_set)
384# define vsf_remap_gpio_output_and_clear VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_output_and_clear)
385# define vsf_remap_gpio_toggle VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_toggle)
386# define vsf_remap_gpio_exti_irq_enable VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_exti_irq_enable)
387# define vsf_remap_gpio_exti_irq_disable VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_exti_irq_disable)
388# define vsf_remap_gpio_exti_irq_config VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_exti_irq_config)
390# define VSF_GPIO_CFG_IMP_REMAP_FUNCTIONS \
391 vsf_err_t vsf_origin_gpio_port_config_pins(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask, vsf_gpio_cfg_t *cfg) \
393 VSF_HAL_ASSERT(gpio_ptr != NULL); \
394 VSF_HAL_ASSERT(pin_mask != 0); \
395 VSF_HAL_ASSERT(cfg != NULL); \
396 return vsf_remap_gpio_port_config_pins(gpio_ptr, pin_mask, cfg); \
398 void vsf_origin_gpio_set_direction(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask, vsf_gpio_pin_mask_t direction_mask) \
400 VSF_HAL_ASSERT(gpio_ptr != NULL); \
401 vsf_remap_gpio_set_direction(gpio_ptr, pin_mask, direction_mask); \
403 vsf_gpio_pin_mask_t vsf_origin_gpio_get_direction(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
405 VSF_HAL_ASSERT(gpio_ptr != NULL); \
406 return vsf_remap_gpio_get_direction(gpio_ptr, pin_mask); \
408 void vsf_origin_gpio_set_input(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
410 VSF_HAL_ASSERT(gpio_ptr != NULL); \
411 vsf_remap_gpio_set_input(gpio_ptr, pin_mask); \
413 void vsf_origin_gpio_set_output(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
415 VSF_HAL_ASSERT(gpio_ptr != NULL); \
416 vsf_remap_gpio_set_output(gpio_ptr, pin_mask); \
418 void vsf_origin_gpio_switch_direction(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
420 VSF_HAL_ASSERT(gpio_ptr != NULL); \
421 vsf_remap_gpio_switch_direction(gpio_ptr, pin_mask); \
423 vsf_gpio_pin_mask_t vsf_origin_gpio_read(vsf_origin_gpio_t *gpio_ptr) \
425 VSF_HAL_ASSERT(gpio_ptr != NULL); \
426 return vsf_remap_gpio_read(gpio_ptr); \
428 void vsf_origin_gpio_write(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask, vsf_gpio_pin_mask_t value) \
430 VSF_HAL_ASSERT(gpio_ptr != NULL); \
431 vsf_remap_gpio_write(gpio_ptr, pin_mask, value); \
433 void vsf_origin_gpio_set(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
435 VSF_HAL_ASSERT(gpio_ptr != NULL); \
436 vsf_remap_gpio_set(gpio_ptr, pin_mask); \
438 void vsf_origin_gpio_clear(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
440 VSF_HAL_ASSERT(gpio_ptr != NULL); \
441 vsf_remap_gpio_clear(gpio_ptr, pin_mask); \
443 void vsf_origin_gpio_toggle(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
445 VSF_HAL_ASSERT(gpio_ptr != NULL); \
446 vsf_remap_gpio_toggle(gpio_ptr, pin_mask); \
448 void vsf_origin_gpio_output_and_set(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
450 VSF_HAL_ASSERT(gpio_ptr != NULL); \
451 vsf_remap_gpio_output_and_set(gpio_ptr, pin_mask); \
453 void vsf_origin_gpio_output_and_clear(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
455 VSF_HAL_ASSERT(gpio_ptr != NULL); \
456 vsf_remap_gpio_output_and_clear(gpio_ptr, pin_mask); \
458 vsf_gpio_capability_t vsf_origin_gpio_capability(vsf_origin_gpio_t *gpio_ptr) \
460 VSF_HAL_ASSERT(gpio_ptr != NULL); \
461 return vsf_remap_gpio_capability(gpio_ptr); \
463 vsf_err_t vsf_origin_gpio_exti_irq_enable(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
465 VSF_HAL_ASSERT(gpio_ptr != NULL); \
466 return vsf_remap_gpio_exti_irq_enable(gpio_ptr, pin_mask); \
468 vsf_err_t vsf_origin_gpio_exti_irq_disable(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
470 VSF_HAL_ASSERT(gpio_ptr != NULL); \
471 return vsf_remap_gpio_exti_irq_disable(gpio_ptr, pin_mask); \
473 vsf_err_t vsf_origin_gpio_exti_irq_config(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_exti_irq_cfg_t *cfg) \
475 VSF_HAL_ASSERT(gpio_ptr != NULL); \
476 return vsf_remap_gpio_exti_irq_config(gpio_ptr, cfg); \
482#ifndef VSF_HAL_TEMPLATE_IMP_NAME
483# define VSF_HAL_TEMPLATE_IMP_NAME _gpio
486#ifndef VSF_HAL_TEMPLATE_IMP_UPCASE_NAME
487# define VSF_HAL_TEMPLATE_IMP_UPCASE_NAME _GPIO
490#ifndef VSF_HAL_TEMPLATE_IMP_COUNT_SUFFIX
491# define VSF_HAL_TEMPLATE_IMP_COUNT_SUFFIX _PORT_COUNT
494#ifndef VSF_HAL_TEMPLATE_IMP_MASK_SUFFIX
495# define VSF_HAL_TEMPLATE_IMP_MASK_SUFFIX _PORT_MASK
498#if !defined(VSF_GPIO_CFG_IMP_PREFIX) && !defined(VSF_GPIO_CFG_IMP_DEVICE_PREFIX)
499# error "Please define VSF_GPIO_CFG_IMP_PREFIX in gpio driver"
502#if !defined(VSF_GPIO_CFG_IMP_UPCASE_PREFIX) && !defined(VSF_GPIO_CFG_IMP_DEVICE_UPCASE_PREFIX)
503# error "Please define VSF_GPIO_CFG_IMP_UPCASE_PREFIX in gpio driver"
506#ifndef VSF_GPIO_CFG_IMP_COUNT_MASK_PREFIX
507# define VSF_GPIO_CFG_IMP_COUNT_MASK_PREFIX VSF_GPIO_CFG_IMP_UPCASE_PREFIX
510#ifdef VSF_GPIO_CFG_IMP_REMAP_FUNCTIONS
511# define VSF_HAL_CFG_IMP_REMAP_FUNCTIONS VSF_GPIO_CFG_IMP_REMAP_FUNCTIONS
516#if VSF_GPIO_CFG_RETAIN_DEFINED_PREFIX == DISABLED
517# undef VSF_GPIO_CFG_IMP_PREFIX
518# undef VSF_GPIO_CFG_IMP_UPCASE_PREFIX
519# undef VSF_GPIO_CFG_IMP_DEVICE_PREFIX
520# undef VSF_GPIO_CFG_IMP_DEVICE_UPCASE_PREFIX
523#undef VSF_GPIO_CFG_REAL_PREFIX
524#undef VSF_GPIO_CFG_ORIGIN_PREFIX
526#undef VSF_GPIO_CFG_IMP_COUNT_MASK_PREFIX
527#undef VSF_GPIO_CFG_IMP_LV0
528#undef VSF_GPIO_CFG_IMP_REMAP_FUNCTIONS
529#undef VSF_GPIO_CFG_IMP_HAS_OP
530#undef VSF_GPIO_CFG_IMP_EXTERN_OP
531#undef VSF_GPIO_CFG_IMP_REMAP_PREFIX
533#undef vsf_origin_gpio_t
534#undef vsf_origin_gpio_capability
535#undef vsf_origin_gpio_port_config_pins
536#undef vsf_origin_gpio_set_direction
537#undef vsf_origin_gpio_get_direction
538#undef vsf_origin_gpio_set_input
539#undef vsf_origin_gpio_set_output
540#undef vsf_origin_gpio_switch_direction
541#undef vsf_origin_gpio_read
542#undef vsf_origin_gpio_write
543#undef vsf_origin_gpio_set
544#undef vsf_origin_gpio_clear
545#undef vsf_origin_gpio_output_and_set
546#undef vsf_origin_gpio_output_and_clear
547#undef vsf_origin_gpio_toggle
548#undef vsf_origin_gpio_exti_irq_config
549#undef vsf_origin_gpio_exti_irq_enable
550#undef vsf_origin_gpio_exti_irq_disable
552#undef vsf_remap_gpio_t
553#undef vsf_remap_gpio_capability
554#undef vsf_remap_gpio_port_config_pins
555#undef vsf_remap_gpio_set_direction
556#undef vsf_remap_gpio_get_direction
557#undef vsf_remap_gpio_set_input
558#undef vsf_remap_gpio_set_output
559#undef vsf_remap_gpio_switch_direction
560#undef vsf_remap_gpio_read
561#undef vsf_remap_gpio_write
562#undef vsf_remap_gpio_set
563#undef vsf_remap_gpio_clear
564#undef vsf_remap_gpio_output_and_set
565#undef vsf_remap_gpio_output_and_clear
566#undef vsf_remap_gpio_toggle
567#undef vsf_remap_gpio_exti_irq_config
568#undef vsf_remap_gpio_exti_irq_enable
569#undef vsf_remap_gpio_exti_irq_disable
vsf_err_t
Definition __type.h:42
@ VSF_ERR_NONE
none error
Definition __type.h:44
#define VSF_GPIO_CFG_CAPABILITY_SUPPORT_OUTPUT_AND_SET
Definition gpio.c:33
#define VSF_GPIO_CFG_CAPABILITY_SUPPORT_OUTPUT_AND_CLEAR
Definition gpio.c:32
#define NULL
Definition lvgl.h:26
unsigned short uint16_t
Definition stdint.h:7
unsigned char uint_fast8_t
Definition stdint.h:23
unsigned uint32_t
Definition stdint.h:9
Definition vsf_template_gpio.h:623
inherit(vsf_peripheral_capability_t) uint8_t is_async uint8_t support_output_and_set
Flag indicating if GPIO operations are asynchronous. When set, operations are only guaranteed to be s...
Definition vsf_template_gpio.h:625
gpio channel configuration
Definition vsf_template_gpio.h:595
uint16_t alternate_function
alternate function is only valid in GPIO_AF mode
Definition vsf_template_gpio.h:598
Definition vsf_template_gpio.h:602
Definition vsf_template_gpio.h:612
#define VSF_HAL_ASSERT(__CON)
all hal modules use this configuration file
Definition vsf_hal_cfg.h:36
#define vsf_gpio_pin_mask_t
Definition vsf_template_gpio.h:279