An open API service indexing awesome lists of open source software.

https://github.com/jpgrismeyer/embedded-stm32-projects

Bare-metal STM32L4 embedded projects with custom drivers in C. Real sensor integration, interrupt handling, and FreeRTOS-ready.
https://github.com/jpgrismeyer/embedded-stm32-projects

bare-metal c-language embedded-systems freertos i2c microcontroller portfolio sensor-integration spi stm32 uart

Last synced: 9 days ago
JSON representation

Bare-metal STM32L4 embedded projects with custom drivers in C. Real sensor integration, interrupt handling, and FreeRTOS-ready.

Awesome Lists containing this project

README

        

# STM32L4xx Bare-Metal Drivers & Projects πŸš€

This repository showcases a collection of **bare-metal drivers** and **hands-on examples** written in **C** for **STM32L4xx microcontrollers**, specifically the **B-L475E-IOT01A2 Discovery board**.

The goal is to demonstrate a solid understanding of low-level embedded systems programming, with no use of HAL or abstraction libraries β€” everything is configured directly from the **Reference Manual**.

---

## πŸ“ Project Structure
stm32l47xx_drivers/
β”œβ”€β”€ drivers/ ← Custom peripheral drivers
β”‚ β”œβ”€β”€ Inc/
β”‚ └── Src/
β”œβ”€β”€ Src/ ← Example applications
β”œβ”€β”€ README.md ← This file
└── Makefile / STM32CubeIDE project files

---

## βœ… Included Examples

| Example | Folder | Description | Peripherals |
|---------|--------|-------------|-------------|
| πŸ”Ή GPIO Button Polling | `001_led_button_polling` | Toggle a LED with button input using polling | GPIO |
| πŸ”Ή GPIO Button External | `002_led_button_ext` | Toggle LED from external button (simple logic) | GPIO |
| πŸ”Ή GPIO Interrupt | `003_button_interrupt` | Use EXTI interrupt to toggle a LED | GPIO, EXTI |
| πŸ”Ή SysTick LED Blinker | `004_led_toggle_systick` | Blink LED using SysTick delay | SysTick, GPIO |
| πŸ”Ή SPI Transmit Test | `005_spi_tx` | Send β€œHello world” over SPI using custom driver | SPI |
| πŸ”Ή SPI TX/RX Loopback | `006_spi_tx_rx` | Full-duplex SPI with loopback and buffer check | SPI |
| πŸ”Ή IΒ²C WHO_AM_I Test | `007_i2c_check` | Read WHO_AM_I from HTS221 via I2C and toggle LED | I2C |
| πŸ”Ή IΒ²C Raw Sensor Data | `008_i2c_hts221_app` | Read raw temp/humidity from HTS221 | I2C, HTS221 |
| πŸ”Ή IΒ²C + UART Output | `009_hts221_usart` | Read HTS221 and print over USART | I2C, UART, HTS221 |
| πŸ”Ή IΒ²C Simple Check | `010_i2c_verification` | Transmit & receive one byte via I2C and blink LED | I2C |
| πŸ”Ή IΒ²C Sensor ID | `011_hts221_whoami` | LED lights up if HTS221 responds with correct ID | I2C, GPIO |
| πŸ”Ή IΒ²C Sensor Logic App | `012_i2c_hts221_readapp` | LED toggling logic based on HTS221 readings | I2C, HTS221 |
| πŸ”Ή Final Sensor+UART App | `013_hts221_usart` | HTS221 data read and sent via UART with LED feedback | I2C, UART, HTS221 |

---

## βš™οΈ Platform

- **MCU**: STM32L475VG (ARM Cortex-M4)
- **Board**: B-L475E-IOT01A2
- **Language**: C11
- **IDE**: STM32CubeIDE (optionally Makefile)
- **Debug**: ST-Link V2

---

## 🎯 Technical Goals

- Work directly with peripheral registers via datasheets/RM.
- Implement clean, modular, reusable drivers.
- Document all examples for educational and reference purposes.
- Build a portfolio aligned with real-world embedded software positions.

---

## πŸ‘¨β€πŸ’» Author

**Juan Pablo Grismeyer**
Electronics Engineer | Embedded Software Developer (Junior)
Based near Munich, Germany πŸ‡©πŸ‡ͺ
[[email protected]](mailto:[email protected])

---

## πŸ”œ Coming soon

- UART with interrupts
- BME280 sensor via SPI
- Final project: FreeRTOS-based environmental monitoring system

---

πŸ—’οΈ *This project is actively maintained and part of my portfolio as an embedded software engineer seeking to join the German job market. Feel free to reach out for collaboration or questions.*