theCore C++ embedded framework

Pin configuration helpers. More...

#include <cstdint>
#include <gpio.h>
#include <sysctl.h>
#include <inc/hw_memmap.h>
#include <inc/hw_ints.h>
#include <type_traits>
Include dependency graph for pin_cfg.hpp:
This graph shows which files directly or indirectly include this file:

Data Structures

struct  ecl::gpio_hw::pin_bin< Gn, Gns >
 Gather given pins into one bin, suitable for passing to the TivaWare functions. More...
 
struct  ecl::gpio_hw::pin_bin< Gn >
 

Namespaces

 ecl
 
 ecl::gpio_hw
 

Enumerations

enum  ecl::gpio_hw::port {
  ecl::gpio_hw::port::a = GPIO_PORTA_BASE, ecl::gpio_hw::port::b = GPIO_PORTB_BASE, ecl::gpio_hw::port::c = GPIO_PORTC_BASE, ecl::gpio_hw::port::d = GPIO_PORTD_BASE,
  ecl::gpio_hw::port::e = GPIO_PORTE_BASE, ecl::gpio_hw::port::f = GPIO_PORTF_BASE
}
 GPIO ports. More...
 
enum  ecl::gpio_hw::num {
  ecl::gpio_hw::num::pin0 = GPIO_PIN_0, ecl::gpio_hw::num::pin1 = GPIO_PIN_1, ecl::gpio_hw::num::pin2 = GPIO_PIN_2, ecl::gpio_hw::num::pin3 = GPIO_PIN_3,
  ecl::gpio_hw::num::pin4 = GPIO_PIN_4, ecl::gpio_hw::num::pin5 = GPIO_PIN_5, ecl::gpio_hw::num::pin6 = GPIO_PIN_6, ecl::gpio_hw::num::pin7 = GPIO_PIN_7
}
 GPIO numbers. More...
 
enum  ecl::gpio_hw::dir { ecl::gpio_hw::dir::in = GPIO_DIR_MODE_IN, ecl::gpio_hw::dir::out = GPIO_DIR_MODE_OUT, ecl::gpio_hw::dir::hw = GPIO_DIR_MODE_HW }
 GPIO directions. More...
 
enum  ecl::gpio_hw::pad_type {
  ecl::gpio_hw::pad_type::push_pull = GPIO_PIN_TYPE_STD, ecl::gpio_hw::pad_type::pull = GPIO_PIN_TYPE_STD_WPD, ecl::gpio_hw::pad_type::push = GPIO_PIN_TYPE_STD_WPU, ecl::gpio_hw::pad_type::od = GPIO_PIN_TYPE_OD,
  ecl::gpio_hw::pad_type::analog = GPIO_PIN_TYPE_ANALOG, ecl::gpio_hw::pad_type::wake_high = GPIO_PIN_TYPE_WAKE_HIGH, ecl::gpio_hw::pad_type::wake_low = GPIO_PIN_TYPE_WAKE_LOW
}
 GPIO types. More...
 
enum  ecl::gpio_hw::strength {
  ecl::gpio_hw::strength::i2ma = GPIO_STRENGTH_2MA, ecl::gpio_hw::strength::i4ma = GPIO_STRENGTH_4MA, ecl::gpio_hw::strength::i6ma = GPIO_STRENGTH_6MA, ecl::gpio_hw::strength::i8ma = GPIO_STRENGTH_8MA,
  ecl::gpio_hw::strength::i8ma_sc = GPIO_STRENGTH_8MA_SC, ecl::gpio_hw::strength::i10ma = GPIO_STRENGTH_10MA, ecl::gpio_hw::strength::i12ma = GPIO_STRENGTH_12MA
}
 GPIO maximum current rating, in milliamperes. More...
 
enum  ecl::gpio_hw::int_source {
  ecl::gpio_hw::int_source::falling = GPIO_FALLING_EDGE, ecl::gpio_hw::int_source::rising = GPIO_RISING_EDGE, ecl::gpio_hw::int_source::both = GPIO_BOTH_EDGES, ecl::gpio_hw::int_source::low = GPIO_LOW_LEVEL,
  ecl::gpio_hw::int_source::high = GPIO_HIGH_LEVEL, ecl::gpio_hw::int_source::discrete = GPIO_DISCRETE_INT
}
 GPIO Interrupt sources. More...
 

Functions

template<port Pt>
static constexpr auto ecl::gpio_hw::get_periph ()
 Gets peripheral associated with given port. More...
 
template<port Pt>
static void ecl::gpio_hw::enable_periph ()
 Enables peripheral for given port. More...
 
template<port Pt, num P, num ... Pn>
static void ecl::gpio_hw::apply_cfg (dir d=dir::out, pad_type t=pad_type::push_pull, strength s=strength::i2ma)
 Applies given configuration for given GPIOs. More...
 
static constexpr auto ecl::gpio_hw::get_irqn (port pt)
 Obtains IRQ number of given port. More...
 
static constexpr auto ecl::gpio_hw::get_pin_intflag (num n)
 Obtains interrupt flag used for corresponding GPIO pin. More...
 

Detailed Description

Pin configuration helpers.