From 5b6df900dd63f7a2022c899aee9dc13fd82a1e5c Mon Sep 17 00:00:00 2001 From: Vegard Storheil Eriksen Date: Sat, 3 Dec 2011 19:39:24 +0100 Subject: Moved GPIO register definition into seperate header. --- pin.h | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 pin.h (limited to 'pin.h') diff --git a/pin.h b/pin.h new file mode 100644 index 0000000..cbace79 --- /dev/null +++ b/pin.h @@ -0,0 +1,83 @@ +#ifndef PIN_H +#define PIN_H + +#include "gpio.h" + +class GPIO { + private: + GPIO_t& g; + int n; + + public: + GPIO(GPIO_t& gpio, int pin) : g(gpio), n(pin) {} + + void on() { + g.BSRR = 1 << n; + } + + void off() { + g.BSRR = 1 << 16 << n; + } + + void toggle() { + if(g.ODR & (1 << n)) { + off(); + } else { + on(); + } + } +}; + +template +class Pin : public Ts... { + public: + Pin(GPIO_t& gpio, int pin) : Ts(gpio, pin)... {} +}; +/* +template +struct U { + struct RX; + struct TX; +}; + +typedef U<1> U1; +typedef U<2> U2; +typedef U<3> U3; + +template +class AF { + public: + AF(GPIO_t& gpio, int pin) {} +}; + +template +class Remap : public AF { + public: + Remap(GPIO_t& gpio, int pin) : AF(gpio, pin) {} +}; + +class Kake { + public: + template + Kake(AF rxpin, AF txpin) {} + + template + Kake(const U&&, AF rxpin, AF txpin) {} +}; + +static Pin> PB6(GPIOB, 6); +static Pin> PB7(GPIOB, 7); + +static Pin, AF> PB8(GPIOB, 8); +static Pin, AF> PB9(GPIOB, 9); +*/ + +static Pin PD12(GPIOD, 12); +static Pin PD13(GPIOD, 13); +static Pin PD14(GPIOD, 14); +static Pin PD15(GPIOD, 15); +/* +Kake f1(PB6, PB7); +Kake f2(PB8, PB9); +*/ +#endif -- cgit v1.2.3