GlobLib is combination of a hardware abstraction layer and common libraries which can be shared across multiple microcontroller units (MCU). It is designed to provide boilerplate, cross-MCU compatible code implementation of the most commonly used features. This project was created to both support code reuseability and as an education exercise in multi-architecture firmware develop for myself.
GlobLib focuses on proving functionality and portability for the most common features of each peripheral.
MCU | STM32F103CB | ATTINY13A |
---|---|---|
GPIO | Full | Full |
USART | Full | Pending |
SPI | Full | Pending |
I2C | Full | Pending |
CAN | Pending | n/a |
ETHERNET | n/a | n/a |
USB | Full | n/a |
ADC | Full | Pending |
DMA | Pending | n/a |
TIMERS | Full | Pending |
SYSTICK | Full | n/a |
RTC | Full | n/a |
WATCHDOG | Full | Pending |
CLOCK CONFIG | Full | Full |
POWER MODES | Full | Pending |
EEPROM | Full | Pending |
BOOTLOADER | Yes (USB) | n/a |
- MPU6050
- LSM9DS1 (SPI interface only)
Additional software modules are included in COMMON with complete Doxygen generated documentation.
Doxygen is used to automatically generate extensive documentation of this collection and its features. This document can be accessed through Github Pages or by typing make libdoc from any of the project templates. A local copy of this repository needs to made before this documentation can be accessed.
This whole repository should be cloned onto a local machine to function correctly.
- Clone this repository onto the local machine
- Run
chmod +x config.sh
to make the configuration file executable - Execute the config file with
./config.sh
. This script sets the glob_lib variable in each Makefile to the current root directory. This should also be run if the main glob_lib folder is moved.
Each supported MCU has a templates containing a project template and specific instructions for its usage. These are located in under each MCU name.