20 #if defined(USE_FULL_LL_DRIVER)
25 #ifdef USE_FULL_ASSERT
28 #define assert_param(expr) ((void)0U)
35 #if defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) || defined (GPIOG)
49 #define IS_LL_GPIO_PIN(__VALUE__) ((((__VALUE__) & LL_GPIO_PIN_ALL)!= 0u) &&\
50 (((__VALUE__) & (~LL_GPIO_PIN_ALL))== 0u))
52 #define IS_LL_GPIO_MODE(__VALUE__) (((__VALUE__) == LL_GPIO_MODE_ANALOG) ||\
53 ((__VALUE__) == LL_GPIO_MODE_FLOATING) ||\
54 ((__VALUE__) == LL_GPIO_MODE_INPUT) ||\
55 ((__VALUE__) == LL_GPIO_MODE_OUTPUT) ||\
56 ((__VALUE__) == LL_GPIO_MODE_ALTERNATE))
58 #define IS_LL_GPIO_SPEED(__VALUE__) (((__VALUE__) == LL_GPIO_SPEED_FREQ_LOW) ||\
59 ((__VALUE__) == LL_GPIO_SPEED_FREQ_MEDIUM) ||\
60 ((__VALUE__) == LL_GPIO_SPEED_FREQ_HIGH))
62 #define IS_LL_GPIO_OUTPUT_TYPE(__VALUE__) (((__VALUE__) == LL_GPIO_OUTPUT_PUSHPULL) ||\
63 ((__VALUE__) == LL_GPIO_OUTPUT_OPENDRAIN))
65 #define IS_LL_GPIO_PULL(__VALUE__) (((__VALUE__) == LL_GPIO_PULL_DOWN) ||\
66 ((__VALUE__) == LL_GPIO_PULL_UP))
100 LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_GPIOA);
101 LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_GPIOA);
103 else if (GPIOx ==
GPIOB)
105 LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_GPIOB);
106 LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_GPIOB);
108 else if (GPIOx ==
GPIOC)
110 LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_GPIOC);
111 LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_GPIOC);
113 else if (GPIOx ==
GPIOD)
115 LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_GPIOD);
116 LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_GPIOD);
119 else if (GPIOx ==
GPIOE)
121 LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_GPIOE);
122 LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_GPIOE);
126 else if (GPIOx == GPIOF)
128 LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_GPIOF);
129 LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_GPIOF);
133 else if (GPIOx == GPIOG)
135 LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_GPIOG);
136 LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_GPIOG);
169 pinmask = ((GPIO_InitStruct->Pin) << GPIO_PIN_MASK_POS) >> GPIO_PIN_NB;
173 while ((pinmask >> pinpos) != 0u)
176 if ((pinmask & (1u << pinpos)) != 0u)
179 if (pinpos < GPIO_PIN_MASK_POS)
181 currentpin = (0x00000101uL << pinpos);
185 currentpin = ((0x00010001u << (pinpos - GPIO_PIN_MASK_POS)) | 0x04000000u);
193 LL_GPIO_SetPinPull(GPIOx, currentpin, GPIO_InitStruct->Pull);
196 LL_GPIO_SetPinMode(GPIOx, currentpin, GPIO_InitStruct->Mode);
198 if ((GPIO_InitStruct->Mode == LL_GPIO_MODE_OUTPUT) || (GPIO_InitStruct->Mode == LL_GPIO_MODE_ALTERNATE))
202 assert_param(IS_LL_GPIO_OUTPUT_TYPE(GPIO_InitStruct->OutputType));
205 LL_GPIO_SetPinSpeed(GPIOx, currentpin, GPIO_InitStruct->Speed);
208 LL_GPIO_SetPinOutputType(GPIOx, currentpin, GPIO_InitStruct->OutputType);
223 void LL_GPIO_StructInit(LL_GPIO_InitTypeDef *GPIO_InitStruct)
226 GPIO_InitStruct->Pin = LL_GPIO_PIN_ALL;
227 GPIO_InitStruct->Mode = LL_GPIO_MODE_FLOATING;
228 GPIO_InitStruct->Speed = LL_GPIO_SPEED_FREQ_LOW;
229 GPIO_InitStruct->OutputType = LL_GPIO_OUTPUT_OPENDRAIN;
230 GPIO_InitStruct->Pull = LL_GPIO_PULL_DOWN;