While your laptop/stationary computer most likely runs some `x86_64` CPU architecture,
odds are your mobile phone is powered by an ARM processor.
The ARM family of Reduced Instruction Set Computing (RISC) architectures is one of the most prevalent processor architectures.
The ARM family of Reduced Instruction Set Computing (RISC) architectures is one
of the most prevalent processor architectures.
For more information: [ARM on Wikipedia](https://en.wikipedia.org/wiki/ARM_architecture).
## Registers, IO
A typical way to access and interface with the hardware connected to your microcontroller is by accessing various registers, which is memory regions mapped to some hardware.
A typical way to access and interface with the hardware connected to your
microcontroller is by accessing various registers,
which is memory regions mapped to some hardware.
## Common Features
...
...
@@ -59,16 +63,24 @@ Feels weird. Move out to exercises and explain there I guess... and maybe not al
##### GPIO (General Purpose Input Output)
The most rudimentary type of interface but equally the most important. As an output this pin can be **ON** or **OFF**, **TRUE** or **FALSE**, **1** or **0**. And as input this pin goes into High-Z (High impedance) mode, this means that the MCU will check the voltage of the pin and if it is above a certain threshold then it will change the register bit corresponding to the state of the pin to 1 and vice versa.
The most rudimentary type of interface but equally the most important.
As an output this pin can be **ON** or **OFF**, **TRUE** or **FALSE**, **1** or **0**.
And as input this pin goes into High-Z (High impedance) mode,
this means that the MCU will check the voltage of the pin and if it is above
a certain threshold then it will change the register bit
corresponding to the state of the pin to 1 and vice versa.
These are often sharing the same physical pin with special functions such as timers, communication buses and the like. So when booting up an MCU one should specify what function is needed on a particular pin. But beware that all functions can **NOT** be mapped to all pins.
These are often sharing the same physical pin with special functions such as
timers, communication buses and the like.
So when booting up an MCU one should specify what function
is needed on a particular pin.
But beware that all functions can **NOT** be mapped to all pins.
There is also a hardware limit to what can be driven by a GPIO pin. Usually, a pin can deliver about 20 mA but that is it.
There is also a hardware limit to what can be driven by a GPIO pin.
Usually, a pin can deliver about 20 mA but that is it.