A method to facilitate programming a microcontroller is disclosed. In one
embodiment, after a user configures the circuit by selecting circuit
parameters and pin-outs, various items are automatically generated to
facilitate programming the microcontroller. The generated items may
include: application programming interfaces (APIs) for programming the
operation of one or more user modules; source code for realizing the user
modules in hardware; interrupt vectors to call interrupt service routines
for one or more modules; and a data sheet for the circuit.