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