The reference is the exhaustive description of the whole library's API, with a description of every module. All you need to know in order to make your project is here.



  • Carbide — helper functions when using the standard Carbide board

Core, clocks and power management

  • Core — interrupts, SysTick, reset, …
  • DMA — Direct Memory Access
  • PM and BPM — Power management
  • SCIF and BSCIF — Clock management
  • Flash — Access to internal Flash memory


  • GPIO — General purpose digital input/output pins
  • ADC — Analog voltage input
  • DAC — Analog voltage output
  • GLOC — Glue logic (truth tables) controller
  • EIC — External interrupts controller

Communication ports

  • USART — Serial port
  • I2C — simple and common communication bus
  • SPI — quick communication protocol
  • USB — Host and device USB communication


  • TC — Generic timer/counters, useful for PWM
  • AST — Asynchronous Timer, used by Core for time() and sleep()
  • WDT — Watchdog timer
  • (SysTick is part of Core)


  • Error — Error reporting and handling
  • TRNG — Random number generator

Utils modules

Modules below are not based on a peripheral in the microcontroller but are instead common-use classes that can be used to speed up development. They are compiled using the UTILS_MODULES option in the Makefile.


Under the hood

This is a more advanced read for those who want to know how the library works and how to customize it. It is by no means necessary to make something great with libtungsten.