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.