{"id":15735177,"url":"https://github.com/codewithivy/stm32f446xx_drivers","last_synced_at":"2025-03-31T03:47:06.272Z","repository":{"id":257499429,"uuid":"857899413","full_name":"codewithivy/stm32f446xx_drivers","owner":"codewithivy","description":"My journey into embedded systems","archived":false,"fork":false,"pushed_at":"2025-01-23T03:36:47.000Z","size":173,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-06T08:31:40.819Z","etag":null,"topics":["beaglebone","c","driver-development","microcontroller-programming","real-time-systems","stm32"],"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/codewithivy.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}},"created_at":"2024-09-15T22:21:37.000Z","updated_at":"2025-01-23T03:36:50.000Z","dependencies_parsed_at":"2024-09-17T21:56:35.622Z","dependency_job_id":"ac1d118d-d611-48ab-89b4-42c2ea0fe504","html_url":"https://github.com/codewithivy/stm32f446xx_drivers","commit_stats":{"total_commits":9,"total_committers":1,"mean_commits":9.0,"dds":0.0,"last_synced_commit":"d1f899e3ea675da35f5344c1c75b308ff2b869b3"},"previous_names":["ir02/stm32f446xx_drivers","codewithivy/stm32f446xx_drivers"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codewithivy%2Fstm32f446xx_drivers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codewithivy%2Fstm32f446xx_drivers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codewithivy%2Fstm32f446xx_drivers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codewithivy%2Fstm32f446xx_drivers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codewithivy","download_url":"https://codeload.github.com/codewithivy/stm32f446xx_drivers/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246413245,"owners_count":20773053,"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":["beaglebone","c","driver-development","microcontroller-programming","real-time-systems","stm32"],"created_at":"2024-10-04T01:10:37.175Z","updated_at":"2025-03-31T03:47:06.248Z","avatar_url":"https://github.com/codewithivy.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bare Metal Programming Practice Repository\n\nThis repository contains code and learning materials focused on **bare-metal programming** for embedded systems. The goal of this project is to practice writing drivers for various communication protocols and peripherals, such as **I2C**, **SPI**, **USART**, and **GPIO**, and to better understand how hardware interacts with software at a low level.\n\n## Table of Contents\n\n1. [Project Overview](#project-overview)\n2. [Technologies Used](#technologies-used)\n3. [Folder Structure](#folder-structure)\n4. [Drivers Implemented](#drivers-implemented)\n   - [I2C](#i2c)\n   - [SPI](#spi)\n   - [USART](#usart)\n   - [GPIO](#gpio)\n5. [Setup](#setup)\n6. [Contributing](#contributing)\n7. [License](#license)\n\n## Project Overview\n\nThe purpose of this repository is to dive deep into embedded systems programming by working at the **bare metal** level, i.e., writing code without the support of an operating system or large frameworks. The focus is on implementing low-level hardware drivers to understand how software controls hardware, including peripherals and communication protocols commonly used in microcontrollers.\n\n## Technologies Used\n\n- **Microcontroller**: STM32, ATmega, or other platforms\n- **Languages**: C, Assembly (optional)\n- **Communication Protocols**: I2C, SPI, USART\n- **Peripherals**: GPIO, LEDs, etc.\n- **Development Tools**: STM32CubeIDE, GCC, ARM Cortex toolchain, or AVR toolchain\n\n## Folder Structure\n\n\n## Drivers Implemented\n\n### I2C(not compeleted)\n\nThe I2C driver allows for communication between the microcontroller and various I2C-compatible devices, such as sensors and memory chips.\n\n- **Features**:\n  - Master mode communication\n  - Support for multi-byte reads and writes\n\n### SPI(not completed)\n\nThe SPI driver is used to interact with external devices over the SPI protocol, such as EEPROMs, sensors, and displays.\n\n- **Features**:\n  - Full-duplex communication\n  - Configurable clock speed and polarity\n\n### USART\n\nThe USART driver handles serial communication between the microcontroller and a PC or other devices.\n\n- **Features**:\n  - Configurable baud rate\n  - Support for interrupts and polling modes\n\n### GPIO\n\nThe GPIO driver is responsible for controlling and monitoring the state of the general-purpose input/output pins.\n\n- **Features**:\n  - Configurable pin modes (input/output)\n  - Pull-up and pull-down resistor control\n\n## Setup\n\n### Prerequisites\n\n1. **Toolchain**: You will need an ARM Cortex toolchain or AVR toolchain, depending on your microcontroller. Install `gcc-arm-none-eabi` for ARM or `avr-gcc` for AVR.\n2. **Hardware**: A development board (e.g., STM32 Nucleo, Arduino, etc.) and any necessary external peripherals.\n\n### Build and Flash Instructions\n\n1. Clone this repository:\n   ```bash\n   git clone https://github.com/yourusername/bare-metal-practice.git\n   cd bare-metal-practice\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodewithivy%2Fstm32f446xx_drivers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodewithivy%2Fstm32f446xx_drivers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodewithivy%2Fstm32f446xx_drivers/lists"}