STM32_GPIO(IO)_HAL - GitMasterNikanjam/ARM_WiKi GitHub Wiki

Configuration GPIO as Output

GPIO output level        Low/High    
GPIO mode:               Push Pull/Open Drain   
GPIO Pull-up/Pull-down:  no pull-up no pull-down/pull-up/pull-down    
Maximum output speed:    Low/Medium/High/Very High    
User Label     

Configuration GPIO as Input

GPIO mode:               Input mode/
GPIO Pull-up/Pull-down:  no pull-up no pull-down/pull-up/pull-down 
User Label

Important Defines and functions:

   
typedef enum
{
  GPIO_PIN_RESET = 0,
  GPIO_PIN_SET
}GPIO_PinState;
// GPIO_pins_define GPIO pins define

#define GPIO_PIN_0                 ((uint16_t)0x0001)  /* Pin 0 selected    */    
#define GPIO_PIN_1                 ((uint16_t)0x0002)  /* Pin 1 selected    */    
#define GPIO_PIN_2                 ((uint16_t)0x0004)  /* Pin 2 selected    */    
#define GPIO_PIN_3                 ((uint16_t)0x0008)  /* Pin 3 selected    */    
#define GPIO_PIN_4                 ((uint16_t)0x0010)  /* Pin 4 selected    */   
#define GPIO_PIN_5                 ((uint16_t)0x0020)  /* Pin 5 selected    */   
#define GPIO_PIN_6                 ((uint16_t)0x0040)  /* Pin 6 selected    */   
#define GPIO_PIN_7                 ((uint16_t)0x0080)  /* Pin 7 selected    */  
#define GPIO_PIN_8                 ((uint16_t)0x0100)  /* Pin 8 selected    */  
#define GPIO_PIN_9                 ((uint16_t)0x0200)  /* Pin 9 selected    */  
#define GPIO_PIN_10                ((uint16_t)0x0400)  /* Pin 10 selected   */   
#define GPIO_PIN_11                ((uint16_t)0x0800)  /* Pin 11 selected   */   
#define GPIO_PIN_12                ((uint16_t)0x1000)  /* Pin 12 selected   */   
#define GPIO_PIN_13                ((uint16_t)0x2000)  /* Pin 13 selected   */   
#define GPIO_PIN_14                ((uint16_t)0x4000)  /* Pin 14 selected   */   
#define GPIO_PIN_15                ((uint16_t)0x8000)  /* Pin 15 selected   */   
#define GPIO_PIN_All               ((uint16_t)0xFFFF)  /* All pins selected */   

//IO operation functions *****************************************************/
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

// GPIOx: GPIOA/GPIOB/GPIOC/ ...
// GPIO_Pin: GPIO_PIN_0/GPIO_PIN_1/ ...
// PinState: 0/1/GPIO_PIN_RESET/GPIO_PIN_SET
// HAL_GPIO_LockPin(): It's used to lock the configuration of a specific GPIO pin. Once a pin is locked, it can't be modified until it's explicitly unlocked.