1 /*
2 * Copyright (c) 2022 Talkweb Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #ifndef __HAL_GPIO_H
17 #define __HAL_GPIO_H
18
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22
23 #include "stm32f4xx_ll_bus.h"
24 #include "stm32f4xx_ll_gpio.h"
25
26 #if defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) || defined (GPIOG) || defined (GPIOH) || defined (GPIOI) || defined (GPIOJ) || defined (GPIOK)
27
28 #if defined(USE_FULL_LL_DRIVER)
29
30 typedef enum {
31 STM32_GPIO_PIN_0 = 0, /* Pin 0 selected */
32 STM32_GPIO_PIN_1, /* Pin 1 selected */
33 STM32_GPIO_PIN_2, /* Pin 2 selected */
34 STM32_GPIO_PIN_3, /* Pin 3 selected */
35 STM32_GPIO_PIN_4, /* Pin 4 selected */
36 STM32_GPIO_PIN_5, /* Pin 5 selected */
37 STM32_GPIO_PIN_6, /* Pin 6 selected */
38 STM32_GPIO_PIN_7, /* Pin 7 selected */
39 STM32_GPIO_PIN_8, /* Pin 8 selected */
40 STM32_GPIO_PIN_9, /* Pin 9 selected */
41 STM32_GPIO_PIN_10, /* Pin 10 selected */
42 STM32_GPIO_PIN_11, /* Pin 11 selected */
43 STM32_GPIO_PIN_12, /* Pin 12 selected */
44 STM32_GPIO_PIN_13, /* Pin 13 selected */
45 STM32_GPIO_PIN_14, /* Pin 14 selected */
46 STM32_GPIO_PIN_15, /* Pin 15 selected */
47 STM32_GPIO_PIN_MAX, /* Pin Max */
48 } STM32_GPIO_PIN;
49
50 typedef enum {
51 STM32_GPIO_GROUP_A = 0,
52 STM32_GPIO_GROUP_B,
53 STM32_GPIO_GROUP_C,
54 STM32_GPIO_GROUP_D,
55 STM32_GPIO_GROUP_E,
56 STM32_GPIO_GROUP_F,
57 STM32_GPIO_GROUP_G,
58 STM32_GPIO_GROUP_H,
59 STM32_GPIO_GROUP_I,
60 STM32_GPIO_GROUP_MAX,
61 }STM32_GPIO_GROUP;
62
LL_GPIO_ReadInputPin(GPIO_TypeDef * GPIOx,uint32_t pinMask)63 __STATIC_INLINE uint16_t LL_GPIO_ReadInputPin(GPIO_TypeDef *GPIOx, uint32_t pinMask)
64 {
65 return (uint32_t)(((READ_REG(GPIOx->IDR)) & pinMask) >> (POSITION_VAL(pinMask)));
66 }
67
68 GPIO_TypeDef* LL_GET_GPIOX(STM32_GPIO_GROUP group);
69 uint32_t LL_GET_HAL_PIN(STM32_GPIO_PIN pin);
70
71 #endif /* USE_FULL_LL_DRIVER */
72
73 #endif /* defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || \
74 defined (GPIOF) || defined (GPIOG) || defined (GPIOH) || defined (GPIOI) || defined (GPIOJ) || defined (GPIOK) */
75
76 #ifdef __cplusplus
77 }
78 #endif
79
80 #endif /* __HAL_GPIO_H */
81