{"id":28962699,"url":"https://github.com/hana0212/embedded-stm32-projects","last_synced_at":"2025-06-24T03:11:50.745Z","repository":{"id":300866246,"uuid":"1007194449","full_name":"hana0212/embedded-stm32-projects","owner":"hana0212","description":"Explore bare-metal drivers and hands-on examples for STM32L4xx microcontrollers. Perfect for low-level embedded programming enthusiasts! 🚀💻","archived":false,"fork":false,"pushed_at":"2025-06-24T01:20:31.000Z","size":317,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-24T02:28:07.160Z","etag":null,"topics":["arduino","beginner-friendly","c","cortex-m3","cprogramming","embedded","embedded-graphics","embedded-rust","esp","flac","hal","music","rtfm","rust","software","stm32","stm32f103","stm32f103c8t6"],"latest_commit_sha":null,"homepage":"https://hana0212.github.io","language":"C","has_issues":false,"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/hana0212.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-23T15:53:12.000Z","updated_at":"2025-06-24T01:20:34.000Z","dependencies_parsed_at":"2025-06-24T02:28:18.101Z","dependency_job_id":"dec71b69-d9f3-47de-950b-63ae6dbcd271","html_url":"https://github.com/hana0212/embedded-stm32-projects","commit_stats":null,"previous_names":["hana0212/embedded-stm32-projects"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hana0212/embedded-stm32-projects","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hana0212%2Fembedded-stm32-projects","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hana0212%2Fembedded-stm32-projects/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hana0212%2Fembedded-stm32-projects/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hana0212%2Fembedded-stm32-projects/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hana0212","download_url":"https://codeload.github.com/hana0212/embedded-stm32-projects/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hana0212%2Fembedded-stm32-projects/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261595784,"owners_count":23182249,"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":["arduino","beginner-friendly","c","cortex-m3","cprogramming","embedded","embedded-graphics","embedded-rust","esp","flac","hal","music","rtfm","rust","software","stm32","stm32f103","stm32f103c8t6"],"created_at":"2025-06-24T03:11:50.190Z","updated_at":"2025-06-24T03:11:50.731Z","avatar_url":"https://github.com/hana0212.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bare-Metal STM32L4 Embedded Projects with Custom Drivers\n\n![STM32](https://img.shields.io/badge/STM32-Embedded%20Projects-brightgreen.svg)\n![C Language](https://img.shields.io/badge/C%20Language-Embedded%20Systems-blue.svg)\n![FreeRTOS](https://img.shields.io/badge/FreeRTOS-Ready-orange.svg)\n\nWelcome to the **embedded-stm32-projects** repository! This collection features bare-metal projects designed for the STM32L4 microcontroller series. Each project includes custom drivers written in C, showcasing real sensor integration, interrupt handling, and is ready for FreeRTOS.\n\nYou can download the latest releases [here](https://github.com/hana0212/embedded-stm32-projects/releases). Follow the instructions to execute the files.\n\n## Table of Contents\n\n- [Project Overview](#project-overview)\n- [Features](#features)\n- [Getting Started](#getting-started)\n- [Project Structure](#project-structure)\n- [Drivers](#drivers)\n- [Sensors](#sensors)\n- [Interrupt Handling](#interrupt-handling)\n- [FreeRTOS Integration](#freertos-integration)\n- [Building the Projects](#building-the-projects)\n- [Testing the Projects](#testing-the-projects)\n- [Contributing](#contributing)\n- [License](#license)\n- [Contact](#contact)\n\n## Project Overview\n\nThe **embedded-stm32-projects** repository focuses on bare-metal programming for the STM32L4 microcontroller. This means you will work directly with hardware without an operating system. The projects aim to provide a hands-on experience with embedded systems.\n\n## Features\n\n- **Bare-metal Programming**: Directly interact with hardware.\n- **Custom Drivers**: Built for various peripherals.\n- **Sensor Integration**: Use I2C and SPI protocols.\n- **Interrupt Handling**: Efficiently manage asynchronous events.\n- **FreeRTOS Ready**: Prepare your projects for real-time operating systems.\n\n## Getting Started\n\nTo get started, clone the repository:\n\n```bash\ngit clone https://github.com/hana0212/embedded-stm32-projects.git\n```\n\nNext, navigate into the project directory:\n\n```bash\ncd embedded-stm32-projects\n```\n\nFor detailed instructions, refer to the [Releases](https://github.com/hana0212/embedded-stm32-projects/releases) section.\n\n## Project Structure\n\nThe project is organized as follows:\n\n```\nembedded-stm32-projects/\n│\n├── drivers/\n│   ├── i2c.c\n│   ├── spi.c\n│   ├── uart.c\n│   └── ...\n│\n├── sensors/\n│   ├── temperature_sensor.c\n│   ├── humidity_sensor.c\n│   └── ...\n│\n├── interrupts/\n│   ├── timer_interrupt.c\n│   ├── gpio_interrupt.c\n│   └── ...\n│\n├── freertos/\n│   ├── tasks.c\n│   └── ...\n│\n└── main.c\n```\n\n## Drivers\n\nThe drivers folder contains the essential code to interface with various peripherals. Each driver is modular, allowing for easy integration into your projects.\n\n### I2C Driver\n\nThe I2C driver facilitates communication with multiple devices using the I2C protocol. It includes functions for:\n\n- Initialization\n- Sending data\n- Receiving data\n\n### SPI Driver\n\nThe SPI driver allows for high-speed communication with devices. It supports:\n\n- Full-duplex communication\n- Master and slave modes\n\n### UART Driver\n\nThe UART driver enables serial communication. Key features include:\n\n- Configurable baud rates\n- Transmit and receive functions\n\n## Sensors\n\nThe sensors folder includes example code for integrating various sensors. Each sensor module is designed to work seamlessly with the provided drivers.\n\n### Temperature Sensor\n\nThis module demonstrates how to read temperature data using an I2C temperature sensor. The implementation includes:\n\n- Sensor initialization\n- Data reading functions\n\n### Humidity Sensor\n\nSimilar to the temperature sensor, this module integrates a humidity sensor. It provides:\n\n- Initialization code\n- Functions to retrieve humidity data\n\n## Interrupt Handling\n\nEfficient interrupt handling is crucial for responsive embedded applications. The interrupts folder includes examples for managing hardware interrupts, such as:\n\n- Timer interrupts for periodic tasks\n- GPIO interrupts for button presses\n\nEach example shows how to set up the interrupt service routine (ISR) and handle events.\n\n## FreeRTOS Integration\n\nFor projects that require multitasking, FreeRTOS can be integrated. The freertos folder contains example tasks that demonstrate:\n\n- Task creation\n- Task scheduling\n- Inter-task communication\n\nThese examples are ready to be modified and expanded based on your needs.\n\n## Building the Projects\n\nTo build the projects, ensure you have the necessary tools installed, such as:\n\n- ARM GCC toolchain\n- Make utility\n\nUse the following command to compile a project:\n\n```bash\nmake\n```\n\nThis command will generate the binary files needed to upload to your STM32L4 microcontroller.\n\n## Testing the Projects\n\nOnce built, you can upload the binary to your microcontroller using tools like ST-Link or OpenOCD. Follow these steps:\n\n1. Connect your STM32L4 to your computer.\n2. Use the appropriate flashing tool.\n3. Load the generated binary file.\n\nFor further testing, you can use serial output to debug and monitor your application.\n\n## Contributing\n\nContributions are welcome! If you want to improve the projects or add new features, please follow these steps:\n\n1. Fork the repository.\n2. Create a new branch for your feature.\n3. Make your changes and commit them.\n4. Submit a pull request.\n\nYour contributions help enhance the quality and functionality of this repository.\n\n## License\n\nThis project is licensed under the MIT License. Feel free to use and modify it as needed.\n\n## Contact\n\nFor questions or suggestions, please reach out via GitHub issues or contact me directly.\n\nYou can download the latest releases [here](https://github.com/hana0212/embedded-stm32-projects/releases). Follow the instructions to execute the files.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhana0212%2Fembedded-stm32-projects","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhana0212%2Fembedded-stm32-projects","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhana0212%2Fembedded-stm32-projects/lists"}