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_GET_PIN_CONFIGURATION
63# define VSF_GPIO_CFG_REIMPLEMENT_API_GET_PIN_CONFIGURATION DISABLED
66#ifndef VSF_GPIO_CFG_REIMPLEMENT_API_READ_OUTPUT_REGISTER
67# define VSF_GPIO_CFG_REIMPLEMENT_API_READ_OUTPUT_REGISTER DISABLED
70#ifndef VSF_GPIO_CFG_REIMPLEMENT_API_PORTS_CONFIG_PIN
71# define VSF_GPIO_CFG_REIMPLEMENT_API_PORTS_CONFIG_PIN DISABLED
74#ifndef VSF_GPIO_CFG_REIMPLEMENT_API_PORTS_CONFIG_PINS
75# define VSF_GPIO_CFG_REIMPLEMENT_API_PORTS_CONFIG_PINS DISABLED
78#ifndef VSF_GPIO_CFG_CHANGE_DIR_FIRST
79# define VSF_GPIO_CFG_CHANGE_DIR_FIRST ENABLED
82#ifndef VSF_GPIO_CFG_CAPABILITY_SUPPORT_CONFIG_PIN
83# define VSF_GPIO_CFG_CAPABILITY_SUPPORT_CONFIG_PIN 1
86#ifndef VSF_GPIO_CFG_CAPABILITY_SUPPORT_OUTPUT_AND_SET
87# define VSF_GPIO_CFG_CAPABILITY_SUPPORT_OUTPUT_AND_SET 0
90#ifndef VSF_GPIO_CFG_CAPABILITY_SUPPORT_OUTPUT_AND_CLEAR
91# define VSF_GPIO_CFG_CAPABILITY_SUPPORT_OUTPUT_AND_CLEAR 0
94#ifndef VSF_GPIO_CFG_CAPABILITY_SUPPORT_INTERRUPT
95# define VSF_GPIO_CFG_CAPABILITY_SUPPORT_INTERRUPT 1
98#ifndef VSF_GPIO_CFG_CAPABILITY_CAN_READ_IN_GPIO_OUTPUT_MODE
99# define VSF_GPIO_CFG_CAPABILITY_CAN_READ_IN_GPIO_OUTPUT_MODE 0
102#ifndef VSF_GPIO_CFG_CAPABILITY_CAN_READ_IN_ALTERNATE_MODE
103# define VSF_GPIO_CFG_CAPABILITY_CAN_READ_IN_ALTERNATE_MODE 0
106#ifndef VSF_GPIO_CFG_REIMPLEMENT_API_CAPABILITY
107# define VSF_GPIO_CFG_REIMPLEMENT_API_CAPABILITY DISABLED
110#ifndef VSF_GPIO_CFG_REIMPLEMENT_API_EXTI_IRQ_GET_CONFIGURATION
111# define VSF_GPIO_CFG_REIMPLEMENT_API_EXTI_IRQ_GET_CONFIGURATION DISABLED
114#ifdef VSF_GPIO_CFG_IMP_REMAP_PREFIX
115# undef VSF_GPIO_CFG_REIMPLEMENT_API_SET_INPUT
116# undef VSF_GPIO_CFG_REIMPLEMENT_API_SET_OUTPUT
117# undef VSF_GPIO_CFG_REIMPLEMENT_API_SWITCH_DIRECTION
118# undef VSF_GPIO_CFG_REIMPLEMENT_API_SET
119# undef VSF_GPIO_CFG_REIMPLEMENT_API_CLEAR
120# undef VSF_GPIO_CFG_REIMPLEMENT_API_OUTPUT_AND_SET
121# undef VSF_GPIO_CFG_REIMPLEMENT_API_OUTPUT_AND_CLEAR
122# undef VSF_GPIO_CFG_REIMPLEMENT_API_GET_PIN_CONFIGURATION
123# undef VSF_GPIO_CFG_REIMPLEMENT_API_READ_OUTPUT_REGISTER
124# undef VSF_GPIO_CFG_REIMPLEMENT_API_CAPABILITY
125# undef VSF_GPIO_CFG_REIMPLEMENT_API_EXTI_IRQ_GET_CONFIGURATION
126# define VSF_GPIO_CFG_REIMPLEMENT_API_SET_INPUT ENABLED
127# define VSF_GPIO_CFG_REIMPLEMENT_API_SET_OUTPUT ENABLED
128# define VSF_GPIO_CFG_REIMPLEMENT_API_SWITCH_DIRECTION ENABLED
129# define VSF_GPIO_CFG_REIMPLEMENT_API_SET ENABLED
130# define VSF_GPIO_CFG_REIMPLEMENT_API_CLEAR ENABLED
131# define VSF_GPIO_CFG_REIMPLEMENT_API_OUTPUT_AND_SET ENABLED
132# define VSF_GPIO_CFG_REIMPLEMENT_API_OUTPUT_AND_CLEAR ENABLED
133# define VSF_GPIO_CFG_REIMPLEMENT_API_GET_PIN_CONFIGURATION ENABLED
134# define VSF_GPIO_CFG_REIMPLEMENT_API_READ_OUTPUT_REGISTER ENABLED
135# define VSF_GPIO_CFG_REIMPLEMENT_API_CAPABILITY ENABLED
136# define VSF_GPIO_CFG_REIMPLEMENT_API_EXTI_IRQ_GET_CONFIGURATION ENABLED
139#if VSF_GPIO_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
140# ifndef VSF_GPIO_CFG_CAPABILITY_IS_ASYNC
141# define VSF_GPIO_CFG_CAPABILITY_IS_ASYNC 0
144# ifndef VSF_GPIO_CFG_CAPABILITY_PIN_COUNT
145# define VSF_GPIO_CFG_CAPABILITY_PIN_COUNT 32
147# ifndef VSF_GPIO_CFG_CAPABILITY_PIN_MASK
148# define VSF_GPIO_CFG_CAPABILITY_PIN_MASK 0xFFFFFFFF
152#ifndef VSF_GPIO_CFG_REAL_PREFIX
153# define VSF_GPIO_CFG_REAL_PREFIX VSF_GPIO_CFG_IMP_PREFIX
156#define vsf_real_gpios VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpios)
157#define vsf_real_gpio_t VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_t)
158#define vsf_real_gpio_port_config_pins VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_port_config_pins)
159#define vsf_real_gpio_get_pin_configuration VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_get_pin_configuration)
160#define vsf_real_gpio_read VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_read)
161#define vsf_real_gpio_read_output_register VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_read_output_register)
162#define vsf_real_gpio_set_input VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_set_input)
163#define vsf_real_gpio_set_output VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_set_output)
164#define vsf_real_gpio_get_direction VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_get_direction)
165#define vsf_real_gpio_set_direction VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_set_direction)
166#define vsf_real_gpio_switch_direction VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_switch_direction)
167#define vsf_real_gpio_write VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_write)
168#define vsf_real_gpio_set VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_set)
169#define vsf_real_gpio_clear VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_clear)
170#define vsf_real_gpio_output_and_set VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_output_and_set)
171#define vsf_real_gpio_output_and_clear VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_output_and_clear)
172#define vsf_real_gpio_capability VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_capability)
173#define vsf_real_gpio_exti_irq_get_configuration VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_exti_irq_get_configuration)
174#define vsf_real_gpio_port_config_pin VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_port_config_pin)
175#define vsf_real_gpio_ports_config_pin VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_ports_config_pin)
176#define vsf_real_gpio_ports_config_pins VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_ports_config_pins)
184#if VSF_GPIO_CFG_REIMPLEMENT_API_SET_INPUT == DISABLED
190 vsf_real_gpio_set_direction(gpio_ptr, pin_mask, 0);
194#if VSF_GPIO_CFG_REIMPLEMENT_API_SET_OUTPUT == DISABLED
200 vsf_real_gpio_set_direction(gpio_ptr, pin_mask, pin_mask);
204#if VSF_GPIO_CFG_REIMPLEMENT_API_SWITCH_DIRECTION == DISABLED
205void vsf_real_gpio_switch_direction(vsf_real_gpio_t *gpio_ptr,
vsf_gpio_pin_mask_t pin_mask)
210 uint32_t ret = ~vsf_real_gpio_get_direction(gpio_ptr, pin_mask);
211 vsf_real_gpio_set_direction(gpio_ptr, pin_mask, ret);
215#if VSF_GPIO_CFG_REIMPLEMENT_API_SET == DISABLED
221 vsf_real_gpio_write(gpio_ptr, pin_mask, pin_mask);
225#if VSF_GPIO_CFG_REIMPLEMENT_API_CLEAR == DISABLED
231 vsf_real_gpio_write(gpio_ptr, pin_mask, 0);
235#if VSF_GPIO_CFG_REIMPLEMENT_API_OUTPUT_AND_SET == DISABLED
241#if VSF_GPIO_CFG_CAPABILITY_SUPPORT_OUTPUT_AND_SET == 0
244#if VSF_GPIO_CFG_CHANGE_DIR_FIRST == ENABLED
245 vsf_real_gpio_set_output(gpio_ptr, pin_mask);
246 vsf_real_gpio_set(gpio_ptr, pin_mask);
248 vsf_real_gpio_set(gpio_ptr, pin_mask);
249 vsf_real_gpio_set_output(gpio_ptr, pin_mask);
255#if VSF_GPIO_CFG_REIMPLEMENT_API_OUTPUT_AND_CLEAR == DISABLED
256void vsf_real_gpio_output_and_clear(vsf_real_gpio_t *gpio_ptr,
vsf_gpio_pin_mask_t pin_mask)
261#if VSF_GPIO_CFG_CAPABILITY_SUPPORT_OUTPUT_AND_CLEAR == 0
264#if VSF_GPIO_CFG_CHANGE_DIR_FIRST == ENABLED
265 vsf_real_gpio_set_output(gpio_ptr, pin_mask);
266 vsf_real_gpio_clear(gpio_ptr, pin_mask);
268 vsf_real_gpio_clear(gpio_ptr, pin_mask);
269 vsf_real_gpio_set_output(gpio_ptr, pin_mask);
275#if VSF_GPIO_CFG_REIMPLEMENT_API_GET_PIN_CONFIGURATION == DISABLED
288#if VSF_GPIO_CFG_REIMPLEMENT_API_READ_OUTPUT_REGISTER == DISABLED
300#if VSF_GPIO_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
304 .is_async = VSF_GPIO_CFG_CAPABILITY_IS_ASYNC,
307 .support_interrupt = VSF_GPIO_CFG_CAPABILITY_SUPPORT_INTERRUPT,
308 .can_read_in_gpio_output_mode = VSF_GPIO_CFG_CAPABILITY_CAN_READ_IN_GPIO_OUTPUT_MODE,
309 .can_read_in_alternate_mode = VSF_GPIO_CFG_CAPABILITY_CAN_READ_IN_ALTERNATE_MODE,
310 .pin_count = VSF_GPIO_CFG_CAPABILITY_PIN_COUNT,
311 .pin_mask = VSF_GPIO_CFG_CAPABILITY_PIN_MASK,
314 return gpio_capability;
318#if VSF_GPIO_CFG_REIMPLEMENT_API_EXTI_IRQ_GET_CONFIGURATION == DISABLED
331#if VSF_GPIO_CFG_REIMPLEMENT_API_PORTS_CONFIG_PIN == DISABLED
338 for (
int i = 0; i < count; i++) {
341 .mode = cfg_ptr[i].mode,
343 uint16_t port_index = vsf_gpio_get_port(cfg_ptr[i].port_pin_index);
344 uint16_t pin_index = vsf_gpio_get_pin(cfg_ptr[i].port_pin_index);
345 vsf_real_gpio_t *gpio_ptr = vsf_real_gpios[port_index];
347 vsf_real_gpio_port_config_pins(gpio_ptr, 1 << pin_index, &cfg);
357#if VSF_GPIO_CFG_REIMPLEMENT_API_PORTS_CONFIG_PINS == DISABLED
364 for (
int i = 0; i < count; i++) {
365 uint16_t port_index = cfg_ptr[i].port_index;
366 vsf_real_gpio_t *gpio_ptr = vsf_real_gpios[port_index];
369 .mode = cfg_ptr[i].mode,
372 vsf_real_gpio_port_config_pins(gpio_ptr, cfg_ptr[i].pin_mask, &cfg);
384#undef VSF_GPIO_CFG_REIMPLEMENT_API_SET_INPUT
385#undef VSF_GPIO_CFG_REIMPLEMENT_API_SET_OUTPUT
386#undef VSF_GPIO_CFG_REIMPLEMENT_API_SWITCH_DIRECTION
387#undef VSF_GPIO_CFG_REIMPLEMENT_API_SET
388#undef VSF_GPIO_CFG_REIMPLEMENT_API_CLEAR
389#undef VSF_GPIO_CFG_REIMPLEMENT_API_OUTPUT_AND_SET
390#undef VSF_GPIO_CFG_REIMPLEMENT_API_OUTPUT_AND_CLEAR
391#undef VSF_GPIO_CFG_REIMPLEMENT_API_GET_PIN_CONFIGURATION
392#undef VSF_GPIO_CFG_REIMPLEMENT_API_READ_OUTPUT_REGISTER
393#undef VSF_GPIO_CFG_REIMPLEMENT_API_CAPABILITY
394#undef VSF_GPIO_CFG_REIMPLEMENT_API_EXTI_IRQ_GET_CONFIGURATION
395#undef VSF_GPIO_CFG_REIMPLEMENT_API_PORTS_CONFIG_PIN
396#undef VSF_GPIO_CFG_REIMPLEMENT_API_PORTS_CONFIG_PINS
397#undef VSF_GPIO_CFG_CHANGE_DIR_FIRST
398#undef VSF_GPIO_CFG_CAPABILITY_SUPPORT_CONFIG_PIN
399#undef VSF_GPIO_CFG_CAPABILITY_SUPPORT_OUTPUT_AND_SET
400#undef VSF_GPIO_CFG_CAPABILITY_SUPPORT_OUTPUT_AND_CLEAR
401#undef VSF_GPIO_CFG_CAPABILITY_SUPPORT_INTERRUPT
402#undef VSF_GPIO_CFG_CAPABILITY_IS_ASYNC
403#undef VSF_GPIO_CFG_CAPABILITY_PIN_COUNT
404#undef VSF_GPIO_CFG_CAPABILITY_PIN_MASK
405#undef vsf_real_gpio_t
406#undef vsf_real_gpio_get_pin_configuration
407#undef vsf_real_gpio_read
408#undef vsf_real_gpio_read_output_register
409#undef vsf_real_gpio_set_input
410#undef vsf_real_gpio_set_output
411#undef vsf_real_gpio_get_direction
412#undef vsf_real_gpio_set_direction
413#undef vsf_real_gpio_switch_direction
414#undef vsf_real_gpio_write
415#undef vsf_real_gpio_set
416#undef vsf_real_gpio_clear
417#undef vsf_real_gpio_output_and_set
418#undef vsf_real_gpio_output_and_clear
419#undef vsf_real_gpio_capability
420#undef vsf_real_gpio_exti_irq_get_configuration
424#ifdef VSF_GPIO_CFG_IMP_REMAP_PREFIX
425# ifndef VSF_GPIO_CFG_ORIGIN_PREFIX
426# define VSF_GPIO_CFG_ORIGIN_PREFIX VSF_GPIO_CFG_IMP_PREFIX
429# define vsf_origin_gpio_t VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_t)
430# define vsf_origin_gpio_capability VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_capability)
431# define vsf_origin_gpio_port_config_pins VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_port_config_pins)
432# define vsf_origin_gpio_get_pin_configuration VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_get_pin_configuration)
433# define vsf_origin_gpio_set_direction VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_set_direction)
434# define vsf_origin_gpio_get_direction VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_get_direction)
435# define vsf_origin_gpio_set_input VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_set_input)
436# define vsf_origin_gpio_set_output VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_set_output)
437# define vsf_origin_gpio_switch_direction VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_switch_direction)
438# define vsf_origin_gpio_read VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_read)
439# define vsf_origin_gpio_read_output_register VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_read_output_register)
440# define vsf_origin_gpio_write VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_write)
441# define vsf_origin_gpio_set VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_set)
442# define vsf_origin_gpio_clear VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_clear)
443# define vsf_origin_gpio_output_and_set VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_output_and_set)
444# define vsf_origin_gpio_output_and_clear VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_output_and_clear)
445# define vsf_origin_gpio_toggle VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_toggle)
446# define vsf_origin_gpio_exti_irq_enable VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_exti_irq_enable)
447# define vsf_origin_gpio_exti_irq_disable VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_exti_irq_disable)
448# define vsf_origin_gpio_exti_irq_config VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_exti_irq_config)
450# define vsf_remap_gpio_t VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_t)
451# define vsf_remap_gpio_capability VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_capability)
452# define vsf_remap_gpio_port_config_pins VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_port_config_pins)
453# define vsf_remap_gpio_get_pin_configuration VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_get_pin_configuration)
454# define vsf_remap_gpio_set_direction VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_set_direction)
455# define vsf_remap_gpio_get_direction VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_get_direction)
456# define vsf_remap_gpio_set_input VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_set_input)
457# define vsf_remap_gpio_set_output VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_set_output)
458# define vsf_remap_gpio_switch_direction VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_switch_direction)
459# define vsf_remap_gpio_read VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_read)
460# define vsf_remap_gpio_read_output_register VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_read_output_register)
461# define vsf_remap_gpio_write VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_write)
462# define vsf_remap_gpio_set VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_set)
463# define vsf_remap_gpio_clear VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_clear)
464# define vsf_remap_gpio_output_and_set VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_output_and_set)
465# define vsf_remap_gpio_output_and_clear VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_output_and_clear)
466# define vsf_remap_gpio_toggle VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_toggle)
467# define vsf_remap_gpio_exti_irq_enable VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_exti_irq_enable)
468# define vsf_remap_gpio_exti_irq_disable VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_exti_irq_disable)
469# define vsf_remap_gpio_exti_irq_config VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_exti_irq_config)
471# define VSF_GPIO_CFG_IMP_REMAP_FUNCTIONS \
472 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) \
474 VSF_HAL_ASSERT(gpio_ptr != NULL); \
475 VSF_HAL_ASSERT(pin_mask != 0); \
476 VSF_HAL_ASSERT(cfg != NULL); \
477 return vsf_remap_gpio_port_config_pins(gpio_ptr, pin_mask, cfg); \
479 vsf_err_t vsf_origin_gpio_get_pin_configuration(vsf_origin_gpio_t *gpio_ptr, uint16_t pin_index, vsf_gpio_cfg_t *cfg) \
481 VSF_HAL_ASSERT(gpio_ptr != NULL); \
482 VSF_HAL_ASSERT(cfg != NULL); \
483 return vsf_remap_gpio_get_pin_configuration(gpio_ptr, pin_index, cfg); \
485 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) \
487 VSF_HAL_ASSERT(gpio_ptr != NULL); \
488 vsf_remap_gpio_set_direction(gpio_ptr, pin_mask, direction_mask); \
490 vsf_gpio_pin_mask_t vsf_origin_gpio_get_direction(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
492 VSF_HAL_ASSERT(gpio_ptr != NULL); \
493 return vsf_remap_gpio_get_direction(gpio_ptr, pin_mask); \
495 void vsf_origin_gpio_set_input(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
497 VSF_HAL_ASSERT(gpio_ptr != NULL); \
498 vsf_remap_gpio_set_input(gpio_ptr, pin_mask); \
500 void vsf_origin_gpio_set_output(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
502 VSF_HAL_ASSERT(gpio_ptr != NULL); \
503 vsf_remap_gpio_set_output(gpio_ptr, pin_mask); \
505 void vsf_origin_gpio_switch_direction(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
507 VSF_HAL_ASSERT(gpio_ptr != NULL); \
508 vsf_remap_gpio_switch_direction(gpio_ptr, pin_mask); \
510 vsf_gpio_pin_mask_t vsf_origin_gpio_read(vsf_origin_gpio_t *gpio_ptr) \
512 VSF_HAL_ASSERT(gpio_ptr != NULL); \
513 return vsf_remap_gpio_read(gpio_ptr); \
515 vsf_gpio_pin_mask_t vsf_origin_gpio_read_output_register(vsf_origin_gpio_t *gpio_ptr) \
517 VSF_HAL_ASSERT(gpio_ptr != NULL); \
518 return vsf_remap_gpio_read_output_register(gpio_ptr); \
520 void vsf_origin_gpio_write(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask, vsf_gpio_pin_mask_t value) \
522 VSF_HAL_ASSERT(gpio_ptr != NULL); \
523 vsf_remap_gpio_write(gpio_ptr, pin_mask, value); \
525 void vsf_origin_gpio_set(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
527 VSF_HAL_ASSERT(gpio_ptr != NULL); \
528 vsf_remap_gpio_set(gpio_ptr, pin_mask); \
530 void vsf_origin_gpio_clear(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
532 VSF_HAL_ASSERT(gpio_ptr != NULL); \
533 vsf_remap_gpio_clear(gpio_ptr, pin_mask); \
535 void vsf_origin_gpio_toggle(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
537 VSF_HAL_ASSERT(gpio_ptr != NULL); \
538 vsf_remap_gpio_toggle(gpio_ptr, pin_mask); \
540 void vsf_origin_gpio_output_and_set(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
542 VSF_HAL_ASSERT(gpio_ptr != NULL); \
543 vsf_remap_gpio_output_and_set(gpio_ptr, pin_mask); \
545 void vsf_origin_gpio_output_and_clear(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
547 VSF_HAL_ASSERT(gpio_ptr != NULL); \
548 vsf_remap_gpio_output_and_clear(gpio_ptr, pin_mask); \
550 vsf_gpio_capability_t vsf_origin_gpio_capability(vsf_origin_gpio_t *gpio_ptr) \
552 VSF_HAL_ASSERT(gpio_ptr != NULL); \
553 return vsf_remap_gpio_capability(gpio_ptr); \
555 vsf_err_t vsf_origin_gpio_exti_irq_enable(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
557 VSF_HAL_ASSERT(gpio_ptr != NULL); \
558 return vsf_remap_gpio_exti_irq_enable(gpio_ptr, pin_mask); \
560 vsf_err_t vsf_origin_gpio_exti_irq_disable(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
562 VSF_HAL_ASSERT(gpio_ptr != NULL); \
563 return vsf_remap_gpio_exti_irq_disable(gpio_ptr, pin_mask); \
565 vsf_err_t vsf_origin_gpio_exti_irq_config(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_exti_irq_cfg_t *cfg) \
567 VSF_HAL_ASSERT(gpio_ptr != NULL); \
568 return vsf_remap_gpio_exti_irq_config(gpio_ptr, cfg); \
574#ifndef VSF_HAL_TEMPLATE_IMP_NAME
575# define VSF_HAL_TEMPLATE_IMP_NAME _gpio
578#ifndef VSF_HAL_TEMPLATE_IMP_UPCASE_NAME
579# define VSF_HAL_TEMPLATE_IMP_UPCASE_NAME _GPIO
582#ifndef VSF_HAL_TEMPLATE_IMP_COUNT_SUFFIX
583# define VSF_HAL_TEMPLATE_IMP_COUNT_SUFFIX _PORT_COUNT
586#ifndef VSF_HAL_TEMPLATE_IMP_MASK_SUFFIX
587# define VSF_HAL_TEMPLATE_IMP_MASK_SUFFIX _PORT_MASK
590#if !defined(VSF_GPIO_CFG_IMP_PREFIX) && !defined(VSF_GPIO_CFG_IMP_DEVICE_PREFIX)
591# error "Please define VSF_GPIO_CFG_IMP_PREFIX in gpio driver"
594#if !defined(VSF_GPIO_CFG_IMP_UPCASE_PREFIX) && !defined(VSF_GPIO_CFG_IMP_DEVICE_UPCASE_PREFIX)
595# error "Please define VSF_GPIO_CFG_IMP_UPCASE_PREFIX in gpio driver"
598#ifndef VSF_GPIO_CFG_IMP_COUNT_MASK_PREFIX
599# define VSF_GPIO_CFG_IMP_COUNT_MASK_PREFIX VSF_GPIO_CFG_IMP_UPCASE_PREFIX
602#ifdef VSF_GPIO_CFG_IMP_REMAP_FUNCTIONS
603# define VSF_HAL_CFG_IMP_REMAP_FUNCTIONS VSF_GPIO_CFG_IMP_REMAP_FUNCTIONS
608#if VSF_GPIO_CFG_RETAIN_DEFINED_PREFIX == DISABLED
609# undef VSF_GPIO_CFG_IMP_PREFIX
610# undef VSF_GPIO_CFG_IMP_UPCASE_PREFIX
611# undef VSF_GPIO_CFG_IMP_DEVICE_PREFIX
612# undef VSF_GPIO_CFG_IMP_DEVICE_UPCASE_PREFIX
615#undef VSF_GPIO_CFG_REAL_PREFIX
616#undef VSF_GPIO_CFG_ORIGIN_PREFIX
618#undef VSF_GPIO_CFG_IMP_COUNT_MASK_PREFIX
619#undef VSF_GPIO_CFG_IMP_LV0
620#undef VSF_GPIO_CFG_IMP_REMAP_FUNCTIONS
621#undef VSF_GPIO_CFG_IMP_HAS_OP
622#undef VSF_GPIO_CFG_IMP_EXTERN_OP
623#undef VSF_GPIO_CFG_IMP_REMAP_PREFIX
625#undef vsf_origin_gpio_t
626#undef vsf_origin_gpio_capability
627#undef vsf_origin_gpio_port_config_pins
628#undef vsf_origin_gpio_get_pin_configuration
629#undef vsf_origin_gpio_set_direction
630#undef vsf_origin_gpio_get_direction
631#undef vsf_origin_gpio_set_input
632#undef vsf_origin_gpio_set_output
633#undef vsf_origin_gpio_switch_direction
634#undef vsf_origin_gpio_read
635#undef vsf_origin_gpio_read_output_register
636#undef vsf_origin_gpio_write
637#undef vsf_origin_gpio_set
638#undef vsf_origin_gpio_clear
639#undef vsf_origin_gpio_output_and_set
640#undef vsf_origin_gpio_output_and_clear
641#undef vsf_origin_gpio_toggle
642#undef vsf_origin_gpio_exti_irq_config
643#undef vsf_origin_gpio_exti_irq_enable
644#undef vsf_origin_gpio_exti_irq_disable
646#undef vsf_remap_gpio_t
647#undef vsf_remap_gpio_capability
648#undef vsf_remap_gpio_port_config_pins
649#undef vsf_remap_gpio_get_pin_configuration
650#undef vsf_remap_gpio_set_direction
651#undef vsf_remap_gpio_get_direction
652#undef vsf_remap_gpio_set_input
653#undef vsf_remap_gpio_set_output
654#undef vsf_remap_gpio_switch_direction
655#undef vsf_remap_gpio_read
656#undef vsf_remap_gpio_read_output_register
657#undef vsf_remap_gpio_write
658#undef vsf_remap_gpio_set
659#undef vsf_remap_gpio_clear
660#undef vsf_remap_gpio_output_and_set
661#undef vsf_remap_gpio_output_and_clear
662#undef vsf_remap_gpio_toggle
663#undef vsf_remap_gpio_exti_irq_config
664#undef vsf_remap_gpio_exti_irq_enable
665#undef vsf_remap_gpio_exti_irq_disable
vsf_err_t
Definition __type.h:42
@ VSF_ERR_NOT_SUPPORT
function not supported
Definition __type.h:46
@ 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:654
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:656
gpio configuration
Definition vsf_template_gpio.h:623
vsf_gpio_alternate_function_t alternate_function
alternate function is only valid in GPIO_AF mode
Definition vsf_template_gpio.h:626
Definition vsf_template_gpio.h:616
Definition vsf_template_gpio.h:630
Definition vsf_template_gpio.h:643
#define VSF_HAL_ASSERT(__CON)
all hal modules use this configuration file
Definition vsf_hal_cfg.h:36
uint32_t vsf_gpio_pin_mask_t
Definition vsf_template_gpio.h:308