A collection of Embedded C programming exercises completed during my Bare Metal Embedded Programming Training. These programs were assigned as daily practice and homework to strengthen my understanding of C programming concepts required for developing firmware on ARM Cortex-M based microcontrollers.
This repository contains my solutions to the programming exercises assigned during my Bare Metal Embedded Systems training.
The objective of these exercises was to build a strong foundation in the C programming language before moving to register-level programming and peripheral driver development for STM32 microcontrollers.
Every program in this repository was written independently as part of my daily learning process and demonstrates fundamental programming concepts used in Embedded Systems development.
- Strengthen Embedded C programming skills
- Understand data types and memory representation
- Practice arithmetic, logical, and bitwise operations
- Develop problem-solving skills
- Learn array and string manipulation
- Understand modular programming using functions
- Practice structures and user-defined data types
- Build a solid foundation for Bare Metal STM32 Programming
Bare-Metal-C-Programming
│
├── README.md
│
├── Day-01
│ ├── Day_1_Q_1.c
│ ├── Day_1_Q_2.c
│ ├── ...
│
├── Day-02
│ ├── Day_2_Q_1.c
│ ├── ...
│
├── Day-03
│
├── Day-04
│
└── Day-07
- Size of Data Types
- Integer Range Validation
- Integer Overflow
- Temperature Conversion
- Arithmetic Operations
- Integer vs Floating-Point Division
- ASCII Representation
- Array Basics
- Counter Program
- Unsigned Character Overflow
- Variable Declaration
- Arithmetic Overflow
- Arithmetic Operators
- Relational Operators
- Logical Operators
- Compound Assignment Operators
- Bitwise Operators
- Bit Manipulation
- Even/Odd Detection
- Range Checking
- Largest of Three Numbers
- Leap Year
- Prime Number
- Reverse Number
- Array Traversal
- Array Input
- Array Sum
- Character Arrays
- sizeof() Operator
- Minimum Element
- Array Copy
- Array Reverse
- String Length
- Fixed Buffer Validation
- User-defined Functions
- Function Parameters
- Return Values
- Nested Function Calls
- Static Variables
- Modular Programming
- Array Processing
- Sorting Algorithms
- Duplicate Removal
- Palindrome Checking
- Character Frequency
- String Processing
- Structure Basics
- Employee Record
- Student Record
- Array of Structures
- Passing Structures to Functions
- Call by Reference
- Nested Structures
- Structure Sorting
- Record Management
- Embedded C Programming
- Problem Solving
- Memory Management
- Bit Manipulation
- Modular Programming
- Arrays & Strings
- Functions
- Structures
- Code Organization
- Programming Logic
Language
- C (C99)
Compiler
- GCC
IDE
- Visual Studio Code
Operating System
- Windows
The knowledge gained from these exercises will be applied in upcoming repositories involving:
- STM32 Bare Metal Programming
- ARM Cortex-M Architecture
- Register-Level Programming
- GPIO Driver Development
- UART Driver
- SPI Driver
- I2C Driver
- Timer Programming
- Interrupt Handling
- Peripheral Driver Development
These exercises were assigned during my Bare Metal Embedded Programming Training as daily practice and homework. Solving these problems independently helped me strengthen my understanding of C programming concepts that form the foundation of Embedded Systems development.
Logeshwaran R
Electronics and Communication Engineering
Aspiring Embedded Systems Engineer
⭐ If you find this repository helpful, feel free to explore the programs and share your feedback.