137 #ifdef HAL_GPIO_MODULE_ENABLED 144 #define GPIO_MODE ((uint32_t)0x00000003U) 145 #define EXTI_MODE ((uint32_t)0x10000000U) 146 #define GPIO_MODE_IT ((uint32_t)0x00010000U) 147 #define GPIO_MODE_EVT ((uint32_t)0x00020000U) 148 #define RISING_EDGE ((uint32_t)0x00100000U) 149 #define FALLING_EDGE ((uint32_t)0x00200000U) 150 #define GPIO_OUTPUT_TYPE ((uint32_t)0x00000010U) 152 #define GPIO_NUMBER ((uint32_t)16U) 189 uint32_t position = 0x00;
190 uint32_t ioposition = 0x00;
191 uint32_t iocurrent = 0x00;
192 uint32_t temp = 0x00;
201 for(position = 0; position < GPIO_NUMBER; position++)
204 ioposition = ((uint32_t)0x01) << position;
206 iocurrent = (uint32_t)(GPIO_Init->
Pin) & ioposition;
208 if(iocurrent == ioposition)
218 temp = GPIOx->
AFR[position >> 3];
219 temp &= ~((uint32_t)0xF << ((uint32_t)(position & (uint32_t)0x07) * 4)) ;
220 temp |= ((uint32_t)(GPIO_Init->
Alternate) << (((uint32_t)position & (uint32_t)0x07) * 4));
221 GPIOx->
AFR[position >> 3] = temp;
227 temp |= ((GPIO_Init->
Mode & GPIO_MODE) << (position * 2));
239 temp |= (GPIO_Init->
Speed << (position * 2));
245 temp |= (((GPIO_Init->
Mode & GPIO_OUTPUT_TYPE) >> 4) << position);
252 temp |= ((GPIO_Init->
Pull) << (position * 2));
257 if((GPIO_Init->
Mode & EXTI_MODE) == EXTI_MODE)
262 temp =
SYSCFG->EXTICR[position >> 2];
263 temp &= ~(((uint32_t)0x0F) << (4 * (position & 0x03)));
264 temp |= ((uint32_t)(
GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03)));
265 SYSCFG->EXTICR[position >> 2] = temp;
269 temp &= ~((uint32_t)iocurrent);
270 if((GPIO_Init->
Mode & GPIO_MODE_IT) == GPIO_MODE_IT)
277 temp &= ~((uint32_t)iocurrent);
278 if((GPIO_Init->
Mode & GPIO_MODE_EVT) == GPIO_MODE_EVT)
286 temp &= ~((uint32_t)iocurrent);
287 if((GPIO_Init->
Mode & RISING_EDGE) == RISING_EDGE)
294 temp &= ~((uint32_t)iocurrent);
295 if((GPIO_Init->
Mode & FALLING_EDGE) == FALLING_EDGE)
315 uint32_t ioposition = 0x00;
316 uint32_t iocurrent = 0x00;
323 for(position = 0; position < GPIO_NUMBER; position++)
326 ioposition = ((uint32_t)0x01) << position;
328 iocurrent = (GPIO_Pin) & ioposition;
330 if(iocurrent == ioposition)
337 GPIOx->
AFR[position >> 3] &= ~((uint32_t)0xF << ((uint32_t)(position & (uint32_t)0x07) * 4)) ;
349 tmp =
SYSCFG->EXTICR[position >> 2];
350 tmp &= (((uint32_t)0x0F) << (4 * (position & 0x03)));
351 if(tmp == ((uint32_t)(
GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03))))
354 tmp = ((uint32_t)0x0F) << (4 * (position & 0x03));
355 SYSCFG->EXTICR[position >> 2] &= ~tmp;
358 EXTI->IMR &= ~((uint32_t)iocurrent);
359 EXTI->EMR &= ~((uint32_t)iocurrent);
362 EXTI->RTSR &= ~((uint32_t)iocurrent);
363 EXTI->FTSR &= ~((uint32_t)iocurrent);
434 GPIOx->
BSRR = GPIO_Pin;
438 GPIOx->
BSRR = (uint32_t)GPIO_Pin << 16;
453 GPIOx->
ODR ^= GPIO_Pin;
479 GPIOx->
LCKR = GPIO_Pin;
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
GPIO_PinState
GPIO Bit SET and Bit RESET enumeration.
#define __HAL_GPIO_EXTI_GET_IT(__EXTI_LINE__)
Checks whether the specified EXTI line is asserted or not.
#define assert_param(expr)
Include module's header file.
void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin)
#define GPIO_OSPEEDER_OSPEEDR0
#define IS_GPIO_PULL(PULL)
#define __HAL_GPIO_EXTI_CLEAR_IT(__EXTI_LINE__)
Clears the EXTI's line pending bits.
HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
#define IS_GPIO_PIN_ACTION(ACTION)
#define GPIO_GET_INDEX(__GPIOx__)
This file contains all the functions prototypes for the HAL module driver.
void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
#define GPIO_PUPDR_PUPDR0
#define __HAL_RCC_SYSCFG_CLK_ENABLE()
void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
GPIO Init structure definition.
#define IS_GPIO_SPEED(SPEED)
void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init)
#define IS_GPIO_ALL_INSTANCE(__INSTANCE__)
#define IS_GPIO_MODE(MODE)
HAL_StatusTypeDef
HAL Status structures definition.
#define GPIO_MODER_MODER0
#define GPIO_MODE_OUTPUT_PP
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
#define GPIO_MODE_OUTPUT_OD