{"id":28964563,"url":"https://github.com/jpgrismeyer/embedded-stm32-projects","last_synced_at":"2025-06-24T05:07:10.251Z","repository":{"id":300622393,"uuid":"1006627040","full_name":"jpgrismeyer/embedded-stm32-projects","owner":"jpgrismeyer","description":"Bare-metal STM32L4 embedded projects with custom drivers in C. Real sensor integration, interrupt handling, and FreeRTOS-ready.","archived":false,"fork":false,"pushed_at":"2025-06-22T18:25:30.000Z","size":317,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-22T19:31:16.092Z","etag":null,"topics":["bare-metal","c-language","embedded-systems","freertos","i2c","microcontroller","portfolio","sensor-integration","spi","stm32","uart"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jpgrismeyer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-22T17:13:16.000Z","updated_at":"2025-06-22T18:25:33.000Z","dependencies_parsed_at":"2025-06-22T19:33:01.935Z","dependency_job_id":"89b2284c-a155-4b04-8f62-184ddad31ac2","html_url":"https://github.com/jpgrismeyer/embedded-stm32-projects","commit_stats":null,"previous_names":["jpgrismeyer/embedded-stm32-projects"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jpgrismeyer/embedded-stm32-projects","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpgrismeyer%2Fembedded-stm32-projects","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpgrismeyer%2Fembedded-stm32-projects/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpgrismeyer%2Fembedded-stm32-projects/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpgrismeyer%2Fembedded-stm32-projects/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jpgrismeyer","download_url":"https://codeload.github.com/jpgrismeyer/embedded-stm32-projects/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpgrismeyer%2Fembedded-stm32-projects/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261611075,"owners_count":23184020,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bare-metal","c-language","embedded-systems","freertos","i2c","microcontroller","portfolio","sensor-integration","spi","stm32","uart"],"created_at":"2025-06-24T05:06:49.649Z","updated_at":"2025-06-24T05:07:10.242Z","avatar_url":"https://github.com/jpgrismeyer.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# STM32L4xx Bare-Metal Drivers \u0026 Projects 🚀\n\nThis 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**.\n\nThe 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**.\n\n---\n\n## 📁 Project Structure\nstm32l47xx_drivers/\n├── drivers/              ← Custom peripheral drivers\n│   ├── Inc/\n│   └── Src/\n├── Src/                  ← Example applications\n├── README.md             ← This file\n└── Makefile / STM32CubeIDE project files\n\n\n---\n\n\n## ✅ Included Examples\n\n| Example | Folder | Description | Peripherals |\n|---------|--------|-------------|-------------|\n| 🔹 GPIO Button Polling | `001_led_button_polling` | Toggle a LED with button input using polling | GPIO |\n| 🔹 GPIO Button External | `002_led_button_ext` | Toggle LED from external button (simple logic) | GPIO |\n| 🔹 GPIO Interrupt | `003_button_interrupt` | Use EXTI interrupt to toggle a LED | GPIO, EXTI |\n| 🔹 SysTick LED Blinker | `004_led_toggle_systick` | Blink LED using SysTick delay | SysTick, GPIO |\n| 🔹 SPI Transmit Test | `005_spi_tx` | Send “Hello world” over SPI using custom driver | SPI |\n| 🔹 SPI TX/RX Loopback | `006_spi_tx_rx` | Full-duplex SPI with loopback and buffer check | SPI |\n| 🔹 I²C WHO_AM_I Test | `007_i2c_check` | Read WHO_AM_I from HTS221 via I2C and toggle LED | I2C |\n| 🔹 I²C Raw Sensor Data | `008_i2c_hts221_app` | Read raw temp/humidity from HTS221 | I2C, HTS221 |\n| 🔹 I²C + UART Output | `009_hts221_usart` | Read HTS221 and print over USART | I2C, UART, HTS221 |\n| 🔹 I²C Simple Check | `010_i2c_verification` | Transmit \u0026 receive one byte via I2C and blink LED | I2C |\n| 🔹 I²C Sensor ID | `011_hts221_whoami` | LED lights up if HTS221 responds with correct ID | I2C, GPIO |\n| 🔹 I²C Sensor Logic App | `012_i2c_hts221_readapp` | LED toggling logic based on HTS221 readings | I2C, HTS221 |\n| 🔹 Final Sensor+UART App | `013_hts221_usart` | HTS221 data read and sent via UART with LED feedback | I2C, UART, HTS221 |\n\n\n---\n\n## ⚙️ Platform\n\n- **MCU**: STM32L475VG (ARM Cortex-M4)\n- **Board**: B-L475E-IOT01A2\n- **Language**: C11\n- **IDE**: STM32CubeIDE (optionally Makefile)\n- **Debug**: ST-Link V2\n\n---\n\n## 🎯 Technical Goals\n\n- Work directly with peripheral registers via datasheets/RM.\n- Implement clean, modular, reusable drivers.\n- Document all examples for educational and reference purposes.\n- Build a portfolio aligned with real-world embedded software positions.\n\n---\n\n## 👨‍💻 Author\n\n**Juan Pablo Grismeyer**  \nElectronics Engineer | Embedded Software Developer (Junior)  \nBased near Munich, Germany 🇩🇪  \n[juampagrismeyer@gmail.com](mailto:juampagrismeyer@gmail.com)\n\n---\n\n## 🔜 Coming soon\n\n- UART with interrupts  \n- BME280 sensor via SPI  \n- Final project: FreeRTOS-based environmental monitoring system  \n\n---\n\n🗒️ *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.*\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjpgrismeyer%2Fembedded-stm32-projects","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjpgrismeyer%2Fembedded-stm32-projects","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjpgrismeyer%2Fembedded-stm32-projects/lists"}