From e4fce6731441306aa09dfbfd02b9550c7e6c3b7f Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Sun, 28 Apr 2013 00:37:52 +0200 Subject: ucoolib/hal/gpio: add pull-up, pull-down and speed setting --- ucoolib/hal/gpio/gpio.stm32f4.hh | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'ucoolib/hal/gpio/gpio.stm32f4.hh') diff --git a/ucoolib/hal/gpio/gpio.stm32f4.hh b/ucoolib/hal/gpio/gpio.stm32f4.hh index 75727c3..24025a6 100644 --- a/ucoolib/hal/gpio/gpio.stm32f4.hh +++ b/ucoolib/hal/gpio/gpio.stm32f4.hh @@ -32,6 +32,20 @@ namespace ucoo { /// General purpose input/output on STM32F4. class Gpio : public Io { + public: + enum Pull + { + PULL_NONE = GPIO_PUPD_NONE, + PULL_UP = GPIO_PUPD_PULLUP, + PULL_DOWN = GPIO_PUPD_PULLDOWN, + }; + enum Speed + { + SPEED_2MHZ = GPIO_OSPEED_2MHZ, + SPEED_25MHZ = GPIO_OSPEED_25MHZ, + SPEED_50MHZ = GPIO_OSPEED_50MHZ, + SPEED_100MHZ = GPIO_OSPEED_100MHZ, + }; public: /// Constructor, take the PORT base address, and pin BIT number. Gpio (uint32_t port, int bit); @@ -49,6 +63,10 @@ class Gpio : public Io void input (); /// See Io::output. void output (); + /// Set pull-up or pull-down. + void pull (Pull dir); + /// Set output speed. + void speed (Speed s); private: /// Port register base address. const uint32_t port_; -- cgit v1.2.3