21 #ifndef ARCH_GPIO_HPP_INCLUDED 22 #define ARCH_GPIO_HPP_INCLUDED 114 #include <type_traits> 127 template<
char port,
int pin_no >
130 static_assert(port >=
'A',
"invalid GPIO port");
131 #if defined (STM32F10X_HD) || defined (STM32F10X_XL) 132 static_assert(port <=
'G',
"invalid GPIO port");
134 static_assert(port <=
'E',
"invalid GPIO port");
136 static_assert((pin_no >= 0) && (pin_no < 16),
"invalid GPIO pin-no");
146 static constexpr uint32_t
pin_mask = (uint32_t)1 << pin_no;
156 template<freq_t speed>
157 using output =
typename std::enable_if<
158 speed ==
mhz(2) || speed ==
mhz(10) || speed ==
mhz(50),
160 speed ==
mhz(10) ? 1 :
161 speed ==
mhz(2) ? 2 :
162 speed ==
mhz(50) ? 3 : 0xff
216 template<
char port,
unsigned pin_no, gpio_active_state active_state = gpio_active_state::high >
224 typename gpio_type::mode::input
245 typename gpio_type::mode::template output<speed>
260 :
public gpio_led_base< gpio_output< port, pin_no, active_state, speed > >
266 typename gpio_type::output_type::push_pull
272 #endif // ARCH_GPIO_HPP_INCLUDED
static uint32_t read_output_bit()
Definition: gpio.hpp:207
typelist< typename gpio_type::resources, typename gpio_type::output_type::push_pull > resources
Definition: gpio.hpp:267
static constexpr uint32_t pin_mask
Definition: gpio.hpp:146
typename std::enable_if< speed==mhz(2)||speed==mhz(10)||speed==mhz(50), regval< typename GPIOx::template CRx< pin_no >::MODE, speed==mhz(10) ? 1 :speed==mhz(2) ? 2 :speed==mhz(50) ? 3 :0xff > >::type output
Output mode.
Definition: gpio.hpp:164
typename mpl::make_typelist< sane_typelist<>, Tp... >::type typelist
static constexpr freq_t mhz(unsigned long long x)
static uint32_t read_input_bit()
Definition: gpio.hpp:203
static void reset()
Definition: gpio.hpp:199
typelist< typename gpio_type::resources, typename gpio_type::mode::template output< speed > > resources
Definition: gpio.hpp:246
static __always_inline void store(Tp const value)
General-purpose and alternate-function I/Os (GPIOs and AFIOs)
Definition: gpio.hpp:39
static __always_inline value_type test(value_type const value)