InES Hardware Abstraction Layer
Data Structures | Enumerations | Functions
hal_gpio.h File Reference

Interface of module hal_gpio. More...

#include "reg_stm32f4xx.h"
#include "hal_common.h"

Go to the source code of this file.

Data Structures

struct  hal_gpio_input_t
 Initialisation structure for gpio input mode. More...
 
struct  hal_gpio_output_t
 Initialisation structure for gpio output and af mode. More...
 

Enumerations

enum  hal_gpio_mode_t { HAL_GPIO_MODE_IN = 0x00, HAL_GPIO_MODE_OUT = 0x01, HAL_GPIO_MODE_AF = 0x02, HAL_GPIO_MODE_AN = 0x03 }
 Mode of GPIO port. More...
 
enum  hal_gpio_out_speed_t { HAL_GPIO_OUT_SPEED_2MHZ = 0x00, HAL_GPIO_OUT_SPEED_10MHZ = 0x01, HAL_GPIO_OUT_SPEED_50MHZ = 0x02, HAL_GPIO_OUT_SPEED_100MHZ = 0x03 }
 Available GPIO output speed. More...
 
enum  hal_gpio_out_type_t { HAL_GPIO_OUT_TYPE_PP = 0x00, HAL_GPIO_OUT_TYPE_OD = 0x01 }
 Output mode. More...
 
enum  hal_gpio_pupd_t { HAL_GPIO_PUPD_NOPULL = 0x00, HAL_GPIO_PUPD_UP = 0x01, HAL_GPIO_PUPD_DOWN = 0x02 }
 Available pull-up/down modes. More...
 
enum  hal_gpio_af_t {
  HAL_GPIO_AF_RTC50HZ = 0x00, HAL_GPIO_AF_MCO = 0x00, HAL_GPIO_AF_TAMPER = 0x00, HAL_GPIO_AF_SWJ = 0x00,
  HAL_GPIO_AF_TRACE = 0x00, HAL_GPIO_AF_TIM1 = 0x01, HAL_GPIO_AF_TIM2 = 0x01, HAL_GPIO_AF_TIM3 = 0x02,
  HAL_GPIO_AF_TIM4 = 0x02, HAL_GPIO_AF_TIM5 = 0x02, HAL_GPIO_AF_TIM8 = 0x03, HAL_GPIO_AF_TIM9 = 0x03,
  HAL_GPIO_AF_TIM10 = 0x03, HAL_GPIO_AF_TIM11 = 0x03, HAL_GPIO_AF_I2C1 = 0x04, HAL_GPIO_AF_I2C2 = 0x04,
  HAL_GPIO_AF_I2C3 = 0x04, HAL_GPIO_AF_SPI1 = 0x05, HAL_GPIO_AF_SPI2 = 0x05, HAL_GPIO_AF_SPI4 = 0x05,
  HAL_GPIO_AF_SPI5 = 0x05, HAL_GPIO_AF_SPI6 = 0x05, HAL_GPIO_AF_SPI3 = 0x06, HAL_GPIO_AF_SAI1 = 0x06,
  HAL_GPIO_AF_USART1 = 0x07, HAL_GPIO_AF_USART2 = 0x07, HAL_GPIO_AF_USART3 = 0x07, HAL_GPIO_AF_I2S3ext = 0x07,
  HAL_GPIO_AF_UART4 = 0x08, HAL_GPIO_AF_UART5 = 0x08, HAL_GPIO_AF_USART6 = 0x08, HAL_GPIO_AF_UART7 = 0x08,
  HAL_GPIO_AF_UART8 = 0x08, HAL_GPIO_AF_CAN1 = 0x09, HAL_GPIO_AF_CAN2 = 0x09, HAL_GPIO_AF_TIM12 = 0x09,
  HAL_GPIO_AF_TIM13 = 0x09, HAL_GPIO_AF_TIM14 = 0x09, HAL_GPIO_AF_OTG_FS = 0x0a, HAL_GPIO_AF_OTG_HS = 0x0a,
  HAL_GPIO_AF_ETH = 0x0b, HAL_GPIO_AF_FMC = 0x0c, HAL_GPIO_AF_OTG_HS_FS = 0x0c, HAL_GPIO_AF_SDIO = 0x0c,
  HAL_GPIO_AF_DCMI = 0x0d, HAL_GPIO_AF_LTDC = 0x0e, HAL_GPIO_AF_EVENTOUT = 0x0f
}
 Defines the available alternate function modes.
 
enum  hal_gpio_pin_t {
  HAL_GPIO_PIN_0 = 0x0001, HAL_GPIO_PIN_1 = 0x0002, HAL_GPIO_PIN_2 = 0x0004, HAL_GPIO_PIN_3 = 0x0008,
  HAL_GPIO_PIN_4 = 0x0010, HAL_GPIO_PIN_5 = 0x0020, HAL_GPIO_PIN_6 = 0x0040, HAL_GPIO_PIN_7 = 0x0080,
  HAL_GPIO_PIN_8 = 0x0100, HAL_GPIO_PIN_9 = 0x0200, HAL_GPIO_PIN_10 = 0x0400, HAL_GPIO_PIN_11 = 0x0800,
  HAL_GPIO_PIN_12 = 0x1000, HAL_GPIO_PIN_13 = 0x2000, HAL_GPIO_PIN_14 = 0x4000, HAL_GPIO_PIN_15 = 0x8000,
  HAL_GPIO_PIN_All = 0xffff
}
 Defines the available pins of a GPIO port.
 
enum  hal_gpio_trg_t { HAL_GPIO_TRG_POS = 0x1, HAL_GPIO_TRG_NEG = 0x2, HAL_GPIO_TRG_BOTH = 0x3 }
 Defines the polarity on wich the interrupt should be triggered. More...
 

Functions

void hal_gpio_reset (reg_gpio_t *port) __attribute__((deprecated("Please use GPIOx_RESET().")))
 Resets gpio port to default values. More...
 
void hal_gpio_init_input (reg_gpio_t *port, hal_gpio_input_t init)
 Initializes a port as input. More...
 
void hal_gpio_init_analog (reg_gpio_t *port, hal_gpio_input_t init)
 Initializes a port as analog input. More...
 
void hal_gpio_init_output (reg_gpio_t *port, hal_gpio_output_t init)
 Initializes a port as output. More...
 
void hal_gpio_init_alternate (reg_gpio_t *port, hal_gpio_af_t af_mode, hal_gpio_output_t init)
 Initializes a port in alternate function mode. More...
 
uint16_t hal_gpio_input_read (reg_gpio_t *port)
 Reads the specified GPIO input data port. More...
 
uint16_t hal_gpio_output_read (reg_gpio_t *port)
 Reads the specified GPIO output data port. More...
 
void hal_gpio_output_write (reg_gpio_t *port, uint16_t value)
 Writes to the specified GPIO output port. More...
 
void hal_gpio_bit_set (reg_gpio_t *port, uint16_t pins)
 Sets the specified pins of the output port. More...
 
void hal_gpio_bit_reset (reg_gpio_t *port, uint16_t pins)
 Resets the specified pins of the output port. More...
 
void hal_gpio_bit_toggle (reg_gpio_t *port, uint16_t pins)
 Toggles the specified pins of the output port. More...
 
void hal_gpio_irq_set (reg_gpio_t *port, uint16_t pins, hal_gpio_trg_t edge, hal_bool_t status)
 Enables interrupt on specified GPIO pins. More...
 
hal_bool_t hal_gpio_irq_status (uint16_t pin)
 Return status if specified GPIO interrupt. More...
 
void hal_gpio_irq_clear (uint16_t pin)
 Clear specified GPIO interrupt. More...
 

Detailed Description

Interface of module hal_gpio.

The hardware abstraction layer for the GPIO periphery.

$Id$

Enumeration Type Documentation

◆ hal_gpio_mode_t

Mode of GPIO port.

Enumerator
HAL_GPIO_MODE_OUT 

< Input mode.

HAL_GPIO_MODE_AF 

< Output mode.

HAL_GPIO_MODE_AN 

< Alternate function mode.

◆ hal_gpio_out_speed_t

Available GPIO output speed.

Enumerator
HAL_GPIO_OUT_SPEED_10MHZ 

< Max. 2 MHz.

HAL_GPIO_OUT_SPEED_50MHZ 

< Max. 10 MHz.

HAL_GPIO_OUT_SPEED_100MHZ 

< Max. 50 MHz.

◆ hal_gpio_out_type_t

Output mode.

Enumerator
HAL_GPIO_OUT_TYPE_OD 

< Push/pull output.

◆ hal_gpio_pupd_t

Available pull-up/down modes.

Enumerator
HAL_GPIO_PUPD_UP 

< No pull-up/down.

HAL_GPIO_PUPD_DOWN 

< Enable pull-up.

◆ hal_gpio_trg_t

Defines the polarity on wich the interrupt should be triggered.

Enumerator
HAL_GPIO_TRG_POS 

Trigger on positive edge.

HAL_GPIO_TRG_NEG 

Trigger on negative edge.

HAL_GPIO_TRG_BOTH 

Trigger on both edges.

Function Documentation

◆ hal_gpio_bit_reset()

void hal_gpio_bit_reset ( reg_gpio_t port,
uint16_t  pins 
)

Resets the specified pins of the output port.

Parameters
port: Defines port to interact.
pins: Mask of the pins that should be reset.

◆ hal_gpio_bit_set()

void hal_gpio_bit_set ( reg_gpio_t port,
uint16_t  pins 
)

Sets the specified pins of the output port.

Parameters
port: Defines port to interact.
pins: Mask of the pins that should be set.

◆ hal_gpio_bit_toggle()

void hal_gpio_bit_toggle ( reg_gpio_t port,
uint16_t  pins 
)

Toggles the specified pins of the output port.

Parameters
port: Defines port to interact.
pins: Mask of the pins that should be toggled.

◆ hal_gpio_init_alternate()

void hal_gpio_init_alternate ( reg_gpio_t port,
hal_gpio_af_t  af_mode,
hal_gpio_output_t  init 
)

Initializes a port in alternate function mode.

Parameters
port: Defines port to initialize.
af_mode: Defines the alternate function mode.
init: Structure with mode definitions.

◆ hal_gpio_init_analog()

void hal_gpio_init_analog ( reg_gpio_t port,
hal_gpio_input_t  init 
)

Initializes a port as analog input.

Parameters
port: Defines port to initialize.
init: Structure with mode definitions.

◆ hal_gpio_init_input()

void hal_gpio_init_input ( reg_gpio_t port,
hal_gpio_input_t  init 
)

Initializes a port as input.

Parameters
port: Defines port to initialize.
init: Structure with mode definitions.

◆ hal_gpio_init_output()

void hal_gpio_init_output ( reg_gpio_t port,
hal_gpio_output_t  init 
)

Initializes a port as output.

Parameters
port: Defines port to initialize.
init: Structure with mode definitions.

◆ hal_gpio_input_read()

uint16_t hal_gpio_input_read ( reg_gpio_t port)

Reads the specified GPIO input data port.

Parameters
port: Defines port to interact.
Returns
The value of the input data register.

◆ hal_gpio_irq_clear()

void hal_gpio_irq_clear ( uint16_t  pin)

Clear specified GPIO interrupt.

Parameters
pin: Pin / EXTI line interrupt to clear.

◆ hal_gpio_irq_set()

void hal_gpio_irq_set ( reg_gpio_t port,
uint16_t  pins,
hal_gpio_trg_t  edge,
hal_bool_t  status 
)

Enables interrupt on specified GPIO pins.

Parameters
port: Defines port to interact.
pins: Mask of the pins that should be enabled.
edge: Edge on which the interrupt should fire.
status: ENABLE/DISABLE specified interrupt.

◆ hal_gpio_irq_status()

hal_bool_t hal_gpio_irq_status ( uint16_t  pin)

Return status if specified GPIO interrupt.

Parameters
pin: Pin / EXTI line to check.
Returns
Actual status of specified interrupt.

◆ hal_gpio_output_read()

uint16_t hal_gpio_output_read ( reg_gpio_t port)

Reads the specified GPIO output data port.

Parameters
port: Defines port to interact.
Returns
The value of the output data register.

◆ hal_gpio_output_write()

void hal_gpio_output_write ( reg_gpio_t port,
uint16_t  value 
)

Writes to the specified GPIO output port.

Parameters
port: Defines port to interact.
value: The new value of the output port.

◆ hal_gpio_reset()

void hal_gpio_reset ( reg_gpio_t port)

Resets gpio port to default values.

Parameters
port: Defines port to reset.