The majority of the pins of a microcontroller chip represents configurable input/output lines. Each pin can be configured to represent a logic level by driving the voltage of the pin as a digital output, or to sense the logic state by comparing the voltage as a digital input. Some of the generic pins, though, can be associated to alternate functions, such as analog input, a serial interface, or the output pulse from a timer. Pins may have several possible configurations, but only one is activated at a time. The GPIO controller exposes the configuration of all the pins, and manages the association of the pins to the subsystems when alternate functions are in use.
Depending on the logic of the GPIO controller, the pins can be activated all together, separately, or in groups. In order to implement a driver to set up the pins and use them as needed, it is possible to refer to the datasheet of the microcontroller, or any example implementation provided by the...