Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifndef _PIN_H
- #define _PIN_H
- extern "C"
- {
- #include <libopencm3/stm32/gpio.h>
- }
- enum class PinMode
- {
- INPUT,
- OUTPUT_10MHZ,
- OUTPUT_2MHZ,
- OUTPUT_50MHZ,
- };
- enum class PinConfig
- {
- INPUT_ANALOG,
- INPUT_FLOAT,
- INPUT_PULLUPDOWN,
- OUTPUT_PUSHPULL,
- OUTPUT_OPENDRAIN,
- OUTPUT_ALTFPUSHPULL,
- OUTPUT_ALTFOPENDRAIN
- };
- class pin
- {
- volatile uint32_t _pinBaseAddr;
- uint32_t _port;
- uint8_t _getNativePinMode(PinMode pm);
- uint8_t _getNativePinConfig(PinConfig pc);
- public:
- pin(volatile uint32_t pinBaseAddr, uint32_t port);
- pin() {}
- void assign(volatile uint32_t pinBaseAddr, uint32_t port);
- void setMode(PinMode pm, PinConfig pc);
- void on();
- void off();
- void toggle();
- bool get();
- };
- USAGE:
- 01:55 _ami_: pin p(GPIOC, GPIO13);
- 01:55 _ami_: p.setMode(PinMode::OUTPUT_50MHZ, PinConfig::OUTPUT_PUSHPULL);
- 01:55 _ami_: while (1) { p.toggle();
- 01:55 _ami_: time::delay(1000); }
Add Comment
Please, Sign In to add comment