VSF Documented
sthal_gpio.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright(C)2009-2024 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 __ST_HAL_GPIO_H__
19#define __ST_HAL_GPIO_H__
20
21#ifdef __cplusplus
22extern "C" {
23#endif
24
25#if defined(HAL_GPIO_MODULE_ENABLED) && VSF_HAL_USE_GPIO == ENABLED
26
27/*============================ INCLUDES ======================================*/
28
29#include "sthal_def.h"
30
31/*============================ MACROS ========================================*/
32
33#define GPIO_PIN_0 ((uint16_t)0x0001)
34#define GPIO_PIN_1 ((uint16_t)0x0002)
35#define GPIO_PIN_2 ((uint16_t)0x0004)
36#define GPIO_PIN_3 ((uint16_t)0x0008)
37#define GPIO_PIN_4 ((uint16_t)0x0010)
38#define GPIO_PIN_5 ((uint16_t)0x0020)
39#define GPIO_PIN_6 ((uint16_t)0x0040)
40#define GPIO_PIN_7 ((uint16_t)0x0080)
41#define GPIO_PIN_8 ((uint16_t)0x0100)
42#define GPIO_PIN_9 ((uint16_t)0x0200)
43#define GPIO_PIN_10 ((uint16_t)0x0400)
44#define GPIO_PIN_11 ((uint16_t)0x0800)
45#define GPIO_PIN_12 ((uint16_t)0x1000)
46#define GPIO_PIN_13 ((uint16_t)0x2000)
47#define GPIO_PIN_14 ((uint16_t)0x4000)
48#define GPIO_PIN_15 ((uint16_t)0x8000)
49#define GPIO_PIN_All ((uint16_t)0xFFFF)
50
51#define GPIO_PIN_MASK 0x0000FFFFU
52
53#define GPIO_MODE_INPUT VSF_GPIO_INPUT
54#define GPIO_MODE_OUTPUT_PP VSF_GPIO_OUTPUT_PUSH_PULL
55#define GPIO_MODE_OUTPUT_OD VSF_GPIO_OUTPUT_OPEN_DRAIN
56
57#define GPIO_MODE_AF_PP VSF_GPIO_AF_PUSH_PULL
58#define GPIO_MODE_AF_OD VSF_GPIO_AF_OPEN_DRAIN
59
60#define GPIO_MODE_ANALOG VSF_GPIO_ANALOG
61
62#define GPIO_MODE_IT_RISING (VSF_GPIO_EXTI | VSF_GPIO_EXTI_MODE_RISING)
63#define GPIO_MODE_IT_FALLING (VSF_GPIO_EXTI | VSF_GPIO_EXTI_MODE_FALLING)
64#define GPIO_MODE_IT_RISING_FALLING \
65 (VSF_GPIO_EXTI | VSF_GPIO_EXTI_MODE_RISING_FALLING)
66
67#define GPIO_NOPULL VSF_GPIO_NO_PULL_UP_DOWN
68#define GPIO_PULLUP VSF_GPIO_PULL_UP
69#define GPIO_PULLDOWN VSF_GPIO_PULL_DOWN
70
71#if defined(VSF_GPIO_SPEED_MASK)
72# if define VSF_GPIO_SPEED_LOW
73# define GPIO_SPEED_FREQ_LOW VSF_GPIO_SPEED_LOW
74# endif
75# if define VSF_GPIO_SPEED_MEDIUM
76# define GPIO_SPEED_FREQ_MEDIUM VSF_GPIO_SPEED_MEDIUM
77# endif
78# if define VSF_GPIO_SPEED_HIGH
79# define GPIO_SPEED_FREQ_HIGH VSF_GPIO_SPEED_HIGH
80# endif
81# if define VSF_GPIO_SPEED_VERY_HIGH
82# define GPIO_SPEED_FREQ_VERY_HIGH VSF_GPIO_SPEED_VERY_HIGH
83# endif
84#endif
85
86#ifndef GPIO_SPEED_FREQ_LOW
87# define GPIO_SPEED_FREQ_LOW 0
88#endif
89#ifndef GPIO_SPEED_FREQ_MEDIUM
90# define GPIO_SPEED_FREQ_MEDIUM 0
91#endif
92#ifndef GPIO_SPEED_FREQ_HIGH
93# define GPIO_SPEED_FREQ_HIGH 0
94#endif
95#ifndef GPIO_SPEED_FREQ_VERY_HIGH
96# define GPIO_SPEED_FGPIO_SPEED_FREQ_VERY_HIGHREQ_LOW 0
97#endif
98
99/*============================ MACROFIED FUNCTIONS ===========================*/
100/*============================ TYPES =========================================*/
101
102typedef vsf_gpio_t GPIO_TypeDef;
103
104typedef struct GPIO_InitTypeDef {
105 uint32_t Pin;
106 uint32_t Mode;
107 uint32_t Pull;
108 uint32_t Speed;
109 uint32_t Alternate;
110} GPIO_InitTypeDef;
111
112typedef enum {
113 GPIO_PIN_RESET = 0,
114 GPIO_PIN_SET
115} GPIO_PinState;
116
117/*============================ GLOBAL VARIABLES ==============================*/
118/*============================ PROTOTYPES ====================================*/
119
120void HAL_GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_Init);
121void HAL_GPIO_DeInit(GPIO_TypeDef* GPIOx, uint32_t GPIO_Pin);
122GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
123void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin,
124 GPIO_PinState PinState);
125void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
126HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
128void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);
129
130#endif /* defined(HAL_GPIO_MODULE_ENABLED) && VSF_HAL_USE_GPIO == ENABLED */
131
132#ifdef __cplusplus
133}
134#endif
135
136#endif
unsigned short uint16_t
Definition stdint.h:7
unsigned uint32_t
Definition stdint.h:9
HAL_StatusTypeDef
Definition sthal_def.h:61
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
Definition sthal_gpio.c:44
void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init)
Definition sthal_gpio.c:56
void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
Definition sthal_gpio.c:120
HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Definition sthal_gpio.c:114
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Definition sthal_gpio.c:89
void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
Definition sthal_gpio.c:97
void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Definition sthal_gpio.c:106
void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin)
Definition sthal_gpio.c:77
Definition vsf_template_gpio.h:720
Generated from commit: vsfteam/vsf@0c4049f