VSF Documented
gpio.h
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#ifndef __HAL_DRIVER_GIGADEVICE_GD32H7XX_GPIO_H__
19#define __HAL_DRIVER_GIGADEVICE_GD32H7XX_GPIO_H__
20
21/*============================ INCLUDES ======================================*/
22
23#include "hal/vsf_hal_cfg.h"
24
25#if VSF_HAL_USE_GPIO == ENABLED
26
27#include "../../__device.h"
28
29/*\note Refer to template/README.md for usage cases.
30 * For peripheral drivers, blackbox mode is recommended but not required, reimplementation part MUST be open.
31 * For IPCore drivers, class structure, MULTI_CLASS configuration, reimplementation and class APIs should be open to user.
32 * For emulated drivers, **** No reimplementation ****.
33 *
34 * Usually, there is no IPCore driver for GPIO.
35 */
36
37/*\note Includes CAN ONLY be put here. */
38
39#ifdef __cplusplus
40extern "C" {
41#endif
42
43/*============================ MACROS ========================================*/
44
45// HW
46/*\note hw GPIO driver can reimplement vsf_gpio_mode_t/vsf_gpio_interrupt_mode_t.
47 * To enable reimplementation, please enable macro below:
48 * VSF_GPIO_CFG_REIMPLEMENT_TYPE_MODE for vsf_gpio_mode_t
49 * Reimplementation is used for optimization hw/IPCore drivers, reimplement the bit mask according to hw registers.
50 * *** DO NOT reimplement these in emulated drivers. ***
51 */
52
53#define VSF_GPIO_CFG_REIMPLEMENT_TYPE_MODE ENABLED
54// HW end
55
56/*============================ MACROFIED FUNCTIONS ===========================*/
57/*============================ TYPES =========================================*/
58
59typedef enum vsf_gpio_mode_t {
60 // 0..1, GPIO_CTL: INPUT(0)/OUTPUT(1)/AF(2)/ANALOG(3)
61 // 2: GPIO_OMODE: PUSHPULL(0)/OPENDRAIN(1)
62 VSF_GPIO_INPUT = (0 << 0),
63 VSF_GPIO_ANALOG = (3 << 0),
64 VSF_GPIO_OUTPUT_PUSH_PULL = (1 << 0) | (0 << 2),
65 VSF_GPIO_OUTPUT_OPEN_DRAIN = (1 << 0) | (1 << 2),
66 VSF_GPIO_AF = (2 << 0),
67 VSF_GPIO_AF_PUSH_PULL = (2 << 0) | (0 << 2),
68 VSF_GPIO_AF_OPEN_DRAIN = (2 << 0) | (1 << 2),
70
71 // 3..4, GPIO_PUD: FLOATING(0)/PULLUP(1)/PULLDOWN(2)
73 VSF_GPIO_PULL_UP = (1 << 3),
74 VSF_GPIO_PULL_DOWN = (2 << 3),
75
76 // 5..6, GPIO_OSPD: 12M(0)/60M(1)/85M(2)/100/220M(3)
87
88 // TODO: add input fileter modes
89
90 // TODO: add exti support
97
100
102
103/*============================ INCLUDES ======================================*/
104/*============================ PROTOTYPES ====================================*/
105
106// __vsf_hw_gpio_get_regbase is used in io module to access af registers
108
109#ifdef __cplusplus
110}
111#endif
112
113#endif // VSF_HAL_USE_GPIO
114#endif // __HAL_DRIVER_GIGADEVICE_GD32H7XX_GPIO_H__
115/* EOF */
vsf_gpio_mode_t
Definition gpio.h:31
@ VSF_GPIO_NO_PULL_UP_DOWN
Definition gpio.h:39
@ VSF_GPIO_EXTI_MODE_HIGH_LEVEL
Definition gpio.h:50
@ VSF_GPIO_OUTPUT_PUSH_PULL
Definition gpio.h:43
@ VSF_GPIO_EXTI
Definition gpio.h:45
@ VSF_GPIO_EXTI_MODE_LOW_LEVEL
Definition gpio.h:49
@ VSF_GPIO_EXTI_MODE_NONE
Definition gpio.h:48
@ VSF_GPIO_EXTI_MODE_RISING
Definition gpio.h:51
@ VSF_GPIO_EXTI_MODE_RISING_FALLING
Definition gpio.h:53
@ VSF_GPIO_PULL_UP
Definition gpio.h:37
@ VSF_GPIO_AF
Definition gpio.h:46
@ VSF_GPIO_INPUT
Definition gpio.h:41
@ VSF_GPIO_ANALOG
Definition gpio.h:44
@ VSF_GPIO_EXTI_MODE_FALLING
Definition gpio.h:52
@ VSF_GPIO_OUTPUT_OPEN_DRAIN
Definition gpio.h:42
@ VSF_GPIO_PULL_DOWN
Definition gpio.h:38
#define VSF_GPIO_SPEED_MEDIUM
Definition gpio.h:83
#define VSF_GPIO_SPEED_HIGH
Definition gpio.h:84
#define VSF_GPIO_SPEED_MASK
Definition gpio.h:86
#define VSF_GPIO_SPEED_VERY_HIGH
Definition gpio.h:85
uint32_t __vsf_hw_gpio_get_regbase(vsf_hw_gpio_t *gpio_ptr)
Definition gpio.c:62
@ __VSF_HW_GPIO_MODE_ALL_BITS
Definition gpio.h:98
@ VSF_GPIO_SPEED_100MHZ_220MHZ
Definition gpio.h:80
@ VSF_GPIO_AF_PUSH_PULL
enable output push-pull mode
Definition gpio.h:67
@ VSF_GPIO_SPEED_12MHZ
Definition gpio.h:77
@ VSF_GPIO_AF_OPEN_DRAIN
enable output open-drain mode
Definition gpio.h:68
@ VSF_GPIO_SPEED_60MHZ
Definition gpio.h:78
@ VSF_GPIO_SPEED_85MHZ
Definition gpio.h:79
#define VSF_GPIO_SPEED_LOW
Definition gpio.h:82
unsigned uint32_t
Definition stdint.h:9
Definition gpio.c:64