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_REIMPLEMENT_API_CAPABILITY
99# define VSF_GPIO_CFG_REIMPLEMENT_API_CAPABILITY DISABLED
102#ifndef VSF_GPIO_CFG_REIMPLEMENT_API_EXTI_IRQ_GET_CONFIGURATION
103# define VSF_GPIO_CFG_REIMPLEMENT_API_EXTI_IRQ_GET_CONFIGURATION DISABLED
106#ifdef VSF_GPIO_CFG_IMP_REMAP_PREFIX
107# undef VSF_GPIO_CFG_REIMPLEMENT_API_SET_INPUT
108# undef VSF_GPIO_CFG_REIMPLEMENT_API_SET_OUTPUT
109# undef VSF_GPIO_CFG_REIMPLEMENT_API_SWITCH_DIRECTION
110# undef VSF_GPIO_CFG_REIMPLEMENT_API_SET
111# undef VSF_GPIO_CFG_REIMPLEMENT_API_CLEAR
112# undef VSF_GPIO_CFG_REIMPLEMENT_API_OUTPUT_AND_SET
113# undef VSF_GPIO_CFG_REIMPLEMENT_API_OUTPUT_AND_CLEAR
114# undef VSF_GPIO_CFG_REIMPLEMENT_API_GET_PIN_CONFIGURATION
115# undef VSF_GPIO_CFG_REIMPLEMENT_API_READ_OUTPUT_REGISTER
116# undef VSF_GPIO_CFG_REIMPLEMENT_API_CAPABILITY
117# undef VSF_GPIO_CFG_REIMPLEMENT_API_EXTI_IRQ_GET_CONFIGURATION
118# define VSF_GPIO_CFG_REIMPLEMENT_API_SET_INPUT ENABLED
119# define VSF_GPIO_CFG_REIMPLEMENT_API_SET_OUTPUT ENABLED
120# define VSF_GPIO_CFG_REIMPLEMENT_API_SWITCH_DIRECTION ENABLED
121# define VSF_GPIO_CFG_REIMPLEMENT_API_SET ENABLED
122# define VSF_GPIO_CFG_REIMPLEMENT_API_CLEAR ENABLED
123# define VSF_GPIO_CFG_REIMPLEMENT_API_OUTPUT_AND_SET ENABLED
124# define VSF_GPIO_CFG_REIMPLEMENT_API_OUTPUT_AND_CLEAR ENABLED
125# define VSF_GPIO_CFG_REIMPLEMENT_API_GET_PIN_CONFIGURATION ENABLED
126# define VSF_GPIO_CFG_REIMPLEMENT_API_READ_OUTPUT_REGISTER ENABLED
127# define VSF_GPIO_CFG_REIMPLEMENT_API_CAPABILITY ENABLED
128# define VSF_GPIO_CFG_REIMPLEMENT_API_EXTI_IRQ_GET_CONFIGURATION ENABLED
131#if VSF_GPIO_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
132# ifndef VSF_GPIO_CFG_CAPABILITY_IS_ASYNC
133# define VSF_GPIO_CFG_CAPABILITY_IS_ASYNC 0
136# ifndef VSF_GPIO_CFG_CAPABILITY_PIN_COUNT
137# define VSF_GPIO_CFG_CAPABILITY_PIN_COUNT 32
139# ifndef VSF_GPIO_CFG_CAPABILITY_PIN_MASK
140# define VSF_GPIO_CFG_CAPABILITY_PIN_MASK 0xFFFFFFFF
144#ifndef VSF_GPIO_CFG_REAL_PREFIX
145# define VSF_GPIO_CFG_REAL_PREFIX VSF_GPIO_CFG_IMP_PREFIX
148#define vsf_real_gpios VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpios)
149#define vsf_real_gpio_t VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_t)
150#define vsf_real_gpio_port_config_pins VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_port_config_pins)
151#define vsf_real_gpio_get_pin_configuration VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_get_pin_configuration)
152#define vsf_real_gpio_read VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_read)
153#define vsf_real_gpio_read_output_register VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_read_output_register)
154#define vsf_real_gpio_set_input VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_set_input)
155#define vsf_real_gpio_set_output VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_set_output)
156#define vsf_real_gpio_get_direction VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_get_direction)
157#define vsf_real_gpio_set_direction VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_set_direction)
158#define vsf_real_gpio_switch_direction VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_switch_direction)
159#define vsf_real_gpio_write VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_write)
160#define vsf_real_gpio_set VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_set)
161#define vsf_real_gpio_clear VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_clear)
162#define vsf_real_gpio_output_and_set VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_output_and_set)
163#define vsf_real_gpio_output_and_clear VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_output_and_clear)
164#define vsf_real_gpio_capability VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_capability)
165#define vsf_real_gpio_exti_irq_get_configuration VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_exti_irq_get_configuration)
166#define vsf_real_gpio_port_config_pin VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_port_config_pin)
167#define vsf_real_gpio_ports_config_pin VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_ports_config_pin)
168#define vsf_real_gpio_ports_config_pins VSF_MCONNECT(VSF_GPIO_CFG_REAL_PREFIX, _gpio_ports_config_pins)
176#if VSF_GPIO_CFG_REIMPLEMENT_API_SET_INPUT == DISABLED
182 vsf_real_gpio_set_direction(gpio_ptr, pin_mask, 0);
186#if VSF_GPIO_CFG_REIMPLEMENT_API_SET_OUTPUT == DISABLED
192 vsf_real_gpio_set_direction(gpio_ptr, pin_mask, pin_mask);
196#if VSF_GPIO_CFG_REIMPLEMENT_API_SWITCH_DIRECTION == DISABLED
197void vsf_real_gpio_switch_direction(vsf_real_gpio_t *gpio_ptr,
vsf_gpio_pin_mask_t pin_mask)
202 uint32_t ret = ~vsf_real_gpio_get_direction(gpio_ptr, pin_mask);
203 vsf_real_gpio_set_direction(gpio_ptr, pin_mask, ret);
207#if VSF_GPIO_CFG_REIMPLEMENT_API_SET == DISABLED
213 vsf_real_gpio_write(gpio_ptr, pin_mask, pin_mask);
217#if VSF_GPIO_CFG_REIMPLEMENT_API_CLEAR == DISABLED
223 vsf_real_gpio_write(gpio_ptr, pin_mask, 0);
227#if VSF_GPIO_CFG_REIMPLEMENT_API_OUTPUT_AND_SET == DISABLED
233#if VSF_GPIO_CFG_CAPABILITY_SUPPORT_OUTPUT_AND_SET == 0
236#if VSF_GPIO_CFG_CHANGE_DIR_FIRST == ENABLED
237 vsf_real_gpio_set_output(gpio_ptr, pin_mask);
238 vsf_real_gpio_set(gpio_ptr, pin_mask);
240 vsf_real_gpio_set(gpio_ptr, pin_mask);
241 vsf_real_gpio_set_output(gpio_ptr, pin_mask);
247#if VSF_GPIO_CFG_REIMPLEMENT_API_OUTPUT_AND_CLEAR == DISABLED
248void vsf_real_gpio_output_and_clear(vsf_real_gpio_t *gpio_ptr,
vsf_gpio_pin_mask_t pin_mask)
253#if VSF_GPIO_CFG_CAPABILITY_SUPPORT_OUTPUT_AND_CLEAR == 0
256#if VSF_GPIO_CFG_CHANGE_DIR_FIRST == ENABLED
257 vsf_real_gpio_set_output(gpio_ptr, pin_mask);
258 vsf_real_gpio_clear(gpio_ptr, pin_mask);
260 vsf_real_gpio_clear(gpio_ptr, pin_mask);
261 vsf_real_gpio_set_output(gpio_ptr, pin_mask);
267#if VSF_GPIO_CFG_REIMPLEMENT_API_GET_PIN_CONFIGURATION == DISABLED
280#if VSF_GPIO_CFG_REIMPLEMENT_API_READ_OUTPUT_REGISTER == DISABLED
292#if VSF_GPIO_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
296 .is_async = VSF_GPIO_CFG_CAPABILITY_IS_ASYNC,
299 .support_interrupt = VSF_GPIO_CFG_CAPABILITY_SUPPORT_INTERRUPT,
300 .pin_count = VSF_GPIO_CFG_CAPABILITY_PIN_COUNT,
301 .pin_mask = VSF_GPIO_CFG_CAPABILITY_PIN_MASK,
304 return gpio_capability;
308#if VSF_GPIO_CFG_REIMPLEMENT_API_EXTI_IRQ_GET_CONFIGURATION == DISABLED
321#if VSF_GPIO_CFG_REIMPLEMENT_API_PORTS_CONFIG_PIN == DISABLED
328 for (
int i = 0; i < count; i++) {
331 .mode = cfg_ptr[i].mode,
333 uint16_t port_index = vsf_gpio_get_port(cfg_ptr[i].port_pin_index);
334 uint16_t pin_index = vsf_gpio_get_pin(cfg_ptr[i].port_pin_index);
335 vsf_real_gpio_t *gpio_ptr = vsf_real_gpios[port_index];
337 vsf_real_gpio_port_config_pins(gpio_ptr, 1 << pin_index, &cfg);
347#if VSF_GPIO_CFG_REIMPLEMENT_API_PORTS_CONFIG_PINS == DISABLED
354 for (
int i = 0; i < count; i++) {
355 uint16_t port_index = cfg_ptr[i].port_index;
356 vsf_real_gpio_t *gpio_ptr = vsf_real_gpios[port_index];
359 .mode = cfg_ptr[i].mode,
362 vsf_real_gpio_port_config_pins(gpio_ptr, cfg_ptr[i].pin_mask, &cfg);
374#undef VSF_GPIO_CFG_REIMPLEMENT_API_SET_INPUT
375#undef VSF_GPIO_CFG_REIMPLEMENT_API_SET_OUTPUT
376#undef VSF_GPIO_CFG_REIMPLEMENT_API_SWITCH_DIRECTION
377#undef VSF_GPIO_CFG_REIMPLEMENT_API_SET
378#undef VSF_GPIO_CFG_REIMPLEMENT_API_CLEAR
379#undef VSF_GPIO_CFG_REIMPLEMENT_API_OUTPUT_AND_SET
380#undef VSF_GPIO_CFG_REIMPLEMENT_API_OUTPUT_AND_CLEAR
381#undef VSF_GPIO_CFG_REIMPLEMENT_API_GET_PIN_CONFIGURATION
382#undef VSF_GPIO_CFG_REIMPLEMENT_API_READ_OUTPUT_REGISTER
383#undef VSF_GPIO_CFG_REIMPLEMENT_API_CAPABILITY
384#undef VSF_GPIO_CFG_REIMPLEMENT_API_EXTI_IRQ_GET_CONFIGURATION
385#undef VSF_GPIO_CFG_REIMPLEMENT_API_PORTS_CONFIG_PIN
386#undef VSF_GPIO_CFG_REIMPLEMENT_API_PORTS_CONFIG_PINS
387#undef VSF_GPIO_CFG_CHANGE_DIR_FIRST
388#undef VSF_GPIO_CFG_CAPABILITY_SUPPORT_CONFIG_PIN
389#undef VSF_GPIO_CFG_CAPABILITY_SUPPORT_OUTPUT_AND_SET
390#undef VSF_GPIO_CFG_CAPABILITY_SUPPORT_OUTPUT_AND_CLEAR
391#undef VSF_GPIO_CFG_CAPABILITY_SUPPORT_INTERRUPT
392#undef VSF_GPIO_CFG_CAPABILITY_IS_ASYNC
393#undef VSF_GPIO_CFG_CAPABILITY_PIN_COUNT
394#undef VSF_GPIO_CFG_CAPABILITY_PIN_MASK
395#undef vsf_real_gpio_t
396#undef vsf_real_gpio_get_pin_configuration
397#undef vsf_real_gpio_read
398#undef vsf_real_gpio_read_output_register
399#undef vsf_real_gpio_set_input
400#undef vsf_real_gpio_set_output
401#undef vsf_real_gpio_get_direction
402#undef vsf_real_gpio_set_direction
403#undef vsf_real_gpio_switch_direction
404#undef vsf_real_gpio_write
405#undef vsf_real_gpio_set
406#undef vsf_real_gpio_clear
407#undef vsf_real_gpio_output_and_set
408#undef vsf_real_gpio_output_and_clear
409#undef vsf_real_gpio_capability
410#undef vsf_real_gpio_exti_irq_get_configuration
414#ifdef VSF_GPIO_CFG_IMP_REMAP_PREFIX
415# ifndef VSF_GPIO_CFG_ORIGIN_PREFIX
416# define VSF_GPIO_CFG_ORIGIN_PREFIX VSF_GPIO_CFG_IMP_PREFIX
419# define vsf_origin_gpio_t VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_t)
420# define vsf_origin_gpio_capability VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_capability)
421# define vsf_origin_gpio_port_config_pins VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_port_config_pins)
422# define vsf_origin_gpio_get_pin_configuration VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_get_pin_configuration)
423# define vsf_origin_gpio_set_direction VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_set_direction)
424# define vsf_origin_gpio_get_direction VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_get_direction)
425# define vsf_origin_gpio_set_input VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_set_input)
426# define vsf_origin_gpio_set_output VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_set_output)
427# define vsf_origin_gpio_switch_direction VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_switch_direction)
428# define vsf_origin_gpio_read VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_read)
429# define vsf_origin_gpio_read_output_register VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_read_output_register)
430# define vsf_origin_gpio_write VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_write)
431# define vsf_origin_gpio_set VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_set)
432# define vsf_origin_gpio_clear VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_clear)
433# define vsf_origin_gpio_output_and_set VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_output_and_set)
434# define vsf_origin_gpio_output_and_clear VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_output_and_clear)
435# define vsf_origin_gpio_toggle VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_toggle)
436# define vsf_origin_gpio_exti_irq_enable VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_exti_irq_enable)
437# define vsf_origin_gpio_exti_irq_disable VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_exti_irq_disable)
438# define vsf_origin_gpio_exti_irq_config VSF_MCONNECT(VSF_GPIO_CFG_ORIGIN_PREFIX, _gpio_exti_irq_config)
440# define vsf_remap_gpio_t VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_t)
441# define vsf_remap_gpio_capability VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_capability)
442# define vsf_remap_gpio_port_config_pins VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_port_config_pins)
443# define vsf_remap_gpio_get_pin_configuration VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_get_pin_configuration)
444# define vsf_remap_gpio_set_direction VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_set_direction)
445# define vsf_remap_gpio_get_direction VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_get_direction)
446# define vsf_remap_gpio_set_input VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_set_input)
447# define vsf_remap_gpio_set_output VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_set_output)
448# define vsf_remap_gpio_switch_direction VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_switch_direction)
449# define vsf_remap_gpio_read VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_read)
450# define vsf_remap_gpio_read_output_register VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_read_output_register)
451# define vsf_remap_gpio_write VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_write)
452# define vsf_remap_gpio_set VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_set)
453# define vsf_remap_gpio_clear VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_clear)
454# define vsf_remap_gpio_output_and_set VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_output_and_set)
455# define vsf_remap_gpio_output_and_clear VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_output_and_clear)
456# define vsf_remap_gpio_toggle VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_toggle)
457# define vsf_remap_gpio_exti_irq_enable VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_exti_irq_enable)
458# define vsf_remap_gpio_exti_irq_disable VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_exti_irq_disable)
459# define vsf_remap_gpio_exti_irq_config VSF_MCONNECT(VSF_GPIO_CFG_IMP_REMAP_PREFIX, _gpio_exti_irq_config)
461# define VSF_GPIO_CFG_IMP_REMAP_FUNCTIONS \
462 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) \
464 VSF_HAL_ASSERT(gpio_ptr != NULL); \
465 VSF_HAL_ASSERT(pin_mask != 0); \
466 VSF_HAL_ASSERT(cfg != NULL); \
467 return vsf_remap_gpio_port_config_pins(gpio_ptr, pin_mask, cfg); \
469 vsf_err_t vsf_origin_gpio_get_pin_configuration(vsf_origin_gpio_t *gpio_ptr, uint16_t pin_index, vsf_gpio_cfg_t *cfg) \
471 VSF_HAL_ASSERT(gpio_ptr != NULL); \
472 VSF_HAL_ASSERT(cfg != NULL); \
473 return vsf_remap_gpio_get_pin_configuration(gpio_ptr, pin_index, cfg); \
475 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) \
477 VSF_HAL_ASSERT(gpio_ptr != NULL); \
478 vsf_remap_gpio_set_direction(gpio_ptr, pin_mask, direction_mask); \
480 vsf_gpio_pin_mask_t vsf_origin_gpio_get_direction(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
482 VSF_HAL_ASSERT(gpio_ptr != NULL); \
483 return vsf_remap_gpio_get_direction(gpio_ptr, pin_mask); \
485 void vsf_origin_gpio_set_input(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
487 VSF_HAL_ASSERT(gpio_ptr != NULL); \
488 vsf_remap_gpio_set_input(gpio_ptr, pin_mask); \
490 void vsf_origin_gpio_set_output(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
492 VSF_HAL_ASSERT(gpio_ptr != NULL); \
493 vsf_remap_gpio_set_output(gpio_ptr, pin_mask); \
495 void vsf_origin_gpio_switch_direction(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
497 VSF_HAL_ASSERT(gpio_ptr != NULL); \
498 vsf_remap_gpio_switch_direction(gpio_ptr, pin_mask); \
500 vsf_gpio_pin_mask_t vsf_origin_gpio_read(vsf_origin_gpio_t *gpio_ptr) \
502 VSF_HAL_ASSERT(gpio_ptr != NULL); \
503 return vsf_remap_gpio_read(gpio_ptr); \
505 vsf_gpio_pin_mask_t vsf_origin_gpio_read_output_register(vsf_origin_gpio_t *gpio_ptr) \
507 VSF_HAL_ASSERT(gpio_ptr != NULL); \
508 return vsf_remap_gpio_read_output_register(gpio_ptr); \
510 void vsf_origin_gpio_write(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask, vsf_gpio_pin_mask_t value) \
512 VSF_HAL_ASSERT(gpio_ptr != NULL); \
513 vsf_remap_gpio_write(gpio_ptr, pin_mask, value); \
515 void vsf_origin_gpio_set(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
517 VSF_HAL_ASSERT(gpio_ptr != NULL); \
518 vsf_remap_gpio_set(gpio_ptr, pin_mask); \
520 void vsf_origin_gpio_clear(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
522 VSF_HAL_ASSERT(gpio_ptr != NULL); \
523 vsf_remap_gpio_clear(gpio_ptr, pin_mask); \
525 void vsf_origin_gpio_toggle(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
527 VSF_HAL_ASSERT(gpio_ptr != NULL); \
528 vsf_remap_gpio_toggle(gpio_ptr, pin_mask); \
530 void vsf_origin_gpio_output_and_set(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
532 VSF_HAL_ASSERT(gpio_ptr != NULL); \
533 vsf_remap_gpio_output_and_set(gpio_ptr, pin_mask); \
535 void vsf_origin_gpio_output_and_clear(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
537 VSF_HAL_ASSERT(gpio_ptr != NULL); \
538 vsf_remap_gpio_output_and_clear(gpio_ptr, pin_mask); \
540 vsf_gpio_capability_t vsf_origin_gpio_capability(vsf_origin_gpio_t *gpio_ptr) \
542 VSF_HAL_ASSERT(gpio_ptr != NULL); \
543 return vsf_remap_gpio_capability(gpio_ptr); \
545 vsf_err_t vsf_origin_gpio_exti_irq_enable(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
547 VSF_HAL_ASSERT(gpio_ptr != NULL); \
548 return vsf_remap_gpio_exti_irq_enable(gpio_ptr, pin_mask); \
550 vsf_err_t vsf_origin_gpio_exti_irq_disable(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
552 VSF_HAL_ASSERT(gpio_ptr != NULL); \
553 return vsf_remap_gpio_exti_irq_disable(gpio_ptr, pin_mask); \
555 vsf_err_t vsf_origin_gpio_exti_irq_config(vsf_origin_gpio_t *gpio_ptr, vsf_gpio_exti_irq_cfg_t *cfg) \
557 VSF_HAL_ASSERT(gpio_ptr != NULL); \
558 return vsf_remap_gpio_exti_irq_config(gpio_ptr, cfg); \
564#ifndef VSF_HAL_TEMPLATE_IMP_NAME
565# define VSF_HAL_TEMPLATE_IMP_NAME _gpio
568#ifndef VSF_HAL_TEMPLATE_IMP_UPCASE_NAME
569# define VSF_HAL_TEMPLATE_IMP_UPCASE_NAME _GPIO
572#ifndef VSF_HAL_TEMPLATE_IMP_COUNT_SUFFIX
573# define VSF_HAL_TEMPLATE_IMP_COUNT_SUFFIX _PORT_COUNT
576#ifndef VSF_HAL_TEMPLATE_IMP_MASK_SUFFIX
577# define VSF_HAL_TEMPLATE_IMP_MASK_SUFFIX _PORT_MASK
580#if !defined(VSF_GPIO_CFG_IMP_PREFIX) && !defined(VSF_GPIO_CFG_IMP_DEVICE_PREFIX)
581# error "Please define VSF_GPIO_CFG_IMP_PREFIX in gpio driver"
584#if !defined(VSF_GPIO_CFG_IMP_UPCASE_PREFIX) && !defined(VSF_GPIO_CFG_IMP_DEVICE_UPCASE_PREFIX)
585# error "Please define VSF_GPIO_CFG_IMP_UPCASE_PREFIX in gpio driver"
588#ifndef VSF_GPIO_CFG_IMP_COUNT_MASK_PREFIX
589# define VSF_GPIO_CFG_IMP_COUNT_MASK_PREFIX VSF_GPIO_CFG_IMP_UPCASE_PREFIX
592#ifdef VSF_GPIO_CFG_IMP_REMAP_FUNCTIONS
593# define VSF_HAL_CFG_IMP_REMAP_FUNCTIONS VSF_GPIO_CFG_IMP_REMAP_FUNCTIONS
598#if VSF_GPIO_CFG_RETAIN_DEFINED_PREFIX == DISABLED
599# undef VSF_GPIO_CFG_IMP_PREFIX
600# undef VSF_GPIO_CFG_IMP_UPCASE_PREFIX
601# undef VSF_GPIO_CFG_IMP_DEVICE_PREFIX
602# undef VSF_GPIO_CFG_IMP_DEVICE_UPCASE_PREFIX
605#undef VSF_GPIO_CFG_REAL_PREFIX
606#undef VSF_GPIO_CFG_ORIGIN_PREFIX
608#undef VSF_GPIO_CFG_IMP_COUNT_MASK_PREFIX
609#undef VSF_GPIO_CFG_IMP_LV0
610#undef VSF_GPIO_CFG_IMP_REMAP_FUNCTIONS
611#undef VSF_GPIO_CFG_IMP_HAS_OP
612#undef VSF_GPIO_CFG_IMP_EXTERN_OP
613#undef VSF_GPIO_CFG_IMP_REMAP_PREFIX
615#undef vsf_origin_gpio_t
616#undef vsf_origin_gpio_capability
617#undef vsf_origin_gpio_port_config_pins
618#undef vsf_origin_gpio_get_pin_configuration
619#undef vsf_origin_gpio_set_direction
620#undef vsf_origin_gpio_get_direction
621#undef vsf_origin_gpio_set_input
622#undef vsf_origin_gpio_set_output
623#undef vsf_origin_gpio_switch_direction
624#undef vsf_origin_gpio_read
625#undef vsf_origin_gpio_read_output_register
626#undef vsf_origin_gpio_write
627#undef vsf_origin_gpio_set
628#undef vsf_origin_gpio_clear
629#undef vsf_origin_gpio_output_and_set
630#undef vsf_origin_gpio_output_and_clear
631#undef vsf_origin_gpio_toggle
632#undef vsf_origin_gpio_exti_irq_config
633#undef vsf_origin_gpio_exti_irq_enable
634#undef vsf_origin_gpio_exti_irq_disable
636#undef vsf_remap_gpio_t
637#undef vsf_remap_gpio_capability
638#undef vsf_remap_gpio_port_config_pins
639#undef vsf_remap_gpio_get_pin_configuration
640#undef vsf_remap_gpio_set_direction
641#undef vsf_remap_gpio_get_direction
642#undef vsf_remap_gpio_set_input
643#undef vsf_remap_gpio_set_output
644#undef vsf_remap_gpio_switch_direction
645#undef vsf_remap_gpio_read
646#undef vsf_remap_gpio_read_output_register
647#undef vsf_remap_gpio_write
648#undef vsf_remap_gpio_set
649#undef vsf_remap_gpio_clear
650#undef vsf_remap_gpio_output_and_set
651#undef vsf_remap_gpio_output_and_clear
652#undef vsf_remap_gpio_toggle
653#undef vsf_remap_gpio_exti_irq_config
654#undef vsf_remap_gpio_exti_irq_enable
655#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:635
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:637
gpio channel configuration
Definition vsf_template_gpio.h:604
uint16_t alternate_function
alternate function is only valid in GPIO_AF mode
Definition vsf_template_gpio.h:607
Definition vsf_template_gpio.h:597
Definition vsf_template_gpio.h:611
Definition vsf_template_gpio.h:624
#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