General Purpose I/O control. More...
General Purpose I/O control.
peripheral control over a single GPIO
Button Input (with internal Pullup resistor)
Output Example (perfect for blinking an LED)
#include <gpio.h>
Classes | |
| struct | Config |
| Configuration for a given GPIO. More... | |
Public Types | |
| enum class | Mode { INPUT , OUTPUT , OPEN_DRAIN , ANALOG } |
| Mode of operation for the specified GPIO. More... | |
| enum class | Pull { NOPULL , PULLUP , PULLDOWN } |
| Configures whether an internal Pull up or Pull down resistor is used. More... | |
| enum class | Speed { LOW , MEDIUM , HIGH , VERY_HIGH } |
| Output speed controls the drive strength, and slew rate of the pin. More... | |
Public Member Functions | |
| GPIO () | |
| void | Init () |
| Initialize the GPIO using the internal Config struct. | |
| void | Init (const Config &cfg) |
| Initialize the GPIO from a Config struct. | |
| void | Init (Pin p, const Config &cfg) |
| Initialize the GPIO with a Configuration struct, and explicit pin. | |
| void | Init (Pin p, Mode m=Mode::INPUT, Pull pu=Pull::NOPULL, Speed sp=Speed::LOW) |
| Explicity initialize all configuration for the GPIO. | |
| void | DeInit () |
| Deinitializes the GPIO pin. | |
| bool | Read () |
| Reads the state of the GPIO. | |
| void | Write (bool state) |
| Changes the state of the GPIO hardware when configured as an OUTPUT. | |
| void | Toggle () |
| flips the current state of the GPIO. If it was HIGH, it will go LOW, and vice versa. | |
| Config & | GetConfig () |
|
strong |
Mode of operation for the specified GPIO.
| Enumerator | |
|---|---|
| INPUT | Input for reading state of pin |
| OUTPUT | Output w/ push-pull configuration |
| OPEN_DRAIN | Output w/ open-drain configuration |
| ANALOG | Analog for connection to ADC or DAC peripheral |
|
strong |
Configures whether an internal Pull up or Pull down resistor is used.
Internal Pull up/down resistors are typically 40k ohms, and will be between 30k and 50k
When the Pin is configured in Analog mode, the pull up/down resistors are disabled by hardware.
| Enumerator | |
|---|---|
| NOPULL | No pull up resistor |
| PULLUP | Internal pull up enabled |
| PULLDOWN | Internal pull down enabled |
|
strong |
|
inline |
| void daisy::GPIO::DeInit | ( | ) |
Deinitializes the GPIO pin.
| void daisy::GPIO::Init | ( | const Config & | cfg | ) |
Initialize the GPIO with a Configuration struct, and explicit pin.
| p | Pin specifying the physical connection on the hardware |
| cfg | reference to a Config struct populated with the desired settings. Config::pin will be overwritten |
| void daisy::GPIO::Init | ( | Pin | p, |
| Mode | m = Mode::INPUT, | ||
| Pull | pu = Pull::NOPULL, | ||
| Speed | sp = Speed::LOW ) |
Explicity initialize all configuration for the GPIO.
| p | Pin specifying the physical connection on the hardware |
| m | Mode specifying the behavior of the GPIO (input, output, etc.). Defaults to Mode::INPUT |
| pu | Pull up/down state for the GPIO. Defaults to Pull::NOPULL |
| sp | Speed setting for drive strength/slew rate. Defaults to Speed::Slow |
| bool daisy::GPIO::Read | ( | ) |
| void daisy::GPIO::Toggle | ( | ) |
flips the current state of the GPIO. If it was HIGH, it will go LOW, and vice versa.
| void daisy::GPIO::Write | ( | bool | state | ) |
Changes the state of the GPIO hardware when configured as an OUTPUT.
| state | setting true writes an output HIGH, while setting false writes an output LOW. |