summaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
authoryiancar <yiangosyiangou@cytanet.com.cy>2018-09-28 18:33:11 +0200
committerJack Humbert <jack.humb@gmail.com>2018-09-28 18:33:11 +0200
commit7fe03d085c2ecaa324779093eceb1a12313ca25d (patch)
tree32b697a2fd3b6d981e062710d051a505a821cac5 /docs
parentfa47f5fb15cca3bea9ab4de1001fcfecd43dac19 (diff)
downloadqmk_firmware-7fe03d085c2ecaa324779093eceb1a12313ca25d.tar.gz
qmk_firmware-7fe03d085c2ecaa324779093eceb1a12313ca25d.tar.xz
Update quantum matrix to support both AVR and Chibios ARM (#3968)
* Update quantum matrix to support both AVR and Chibios ARM - Addition of STM32 pin definitions - Created abstruction layer defines to control GPIO (This is a bit pointless for Chibios as we are creating a PAL ontop of a PAL but it is necessary for uniformity with AVR) - Modified matrix.c to use the above functions * minor ifdef fix * Rename of functions and docs - Added documentation. - Renamed functions according to Jack's spec. * Massdrop fix * Update matrix.c * Update quantum.h * Update quantum.h * Update quantum.h * Update internals_gpio_control.md
Diffstat (limited to 'docs')
-rw-r--r--docs/internals_gpio_control.md23
1 files changed, 23 insertions, 0 deletions
diff --git a/docs/internals_gpio_control.md b/docs/internals_gpio_control.md
new file mode 100644
index 000000000..21643d30c
--- /dev/null
+++ b/docs/internals_gpio_control.md
@@ -0,0 +1,23 @@
+# GPIO Control
+
+QMK has a GPIO control abstraction layer which is micro-controller agnostic. This is done to allow easy access to pin control across different platforms.
+
+## Functions
+
+The following functions can provide basic control of GPIOs and are found in `quantum/quantum.h`.
+
+|Function |Description |
+|----------------------|------------------------------------------------------------------|
+|`setPinInput(pin)` |Set pin as input with high impedance (High-Z) |
+|`setPinInputHigh(pin)`|Set pin as input with build in pull-up |
+|`setPinInputLow(pin)` |Set pin as input with build in pull-down (Supported only on STM32)|
+|`setPinOutput(pin)` |Set pin as output |
+|`writePinHige(pin)` |Set pin level as high, assuming it is an output |
+|`writePinLow(pin)` |Set pin level as low, assuming it is an output |
+|`writePin(pin, level)`|Set pin level, assuming it is an output |
+|`readPin(pin)` |Returns the level of the pin |
+
+## Advance settings
+
+Each micro-controller can have multiple advance settings regarding its GPIO. This abstraction layer does not limit the use of architecture specific functions. Advance users should consult the datasheet of there desired device and include any needed libraries. For AVR the standard avr/io.h library is used and for STM32 the Chibios [PAL library](http://chibios.sourceforge.net/docs3/hal/group___p_a_l.html) is used.
+