Skip to content

AbdallahKhat/Embedded_System_Online_Diploma

Repository files navigation

Embedded Systems Diploma Repository

This repository contains comprehensive coursework, projects and implementations from an Embedded Systems diploma program. It covers fundamental to advanced concepts in embedded systems development, microcontroller programming, and system architecture.

Table of Contents

Repository Structure

  • Basic C Programs: Implementation of fundamental C concepts including:

    • Control flow, operators, and basic I/O
    • Mathematical operations and algorithm implementation
    • Character and string manipulation
  • Arrays & Strings:

    • Array manipulation and matrix operations
    • String processing and character array handling
    • Multi-dimensional array implementations
  • Functions & Recursion:

    • Function implementations with various parameter passing methods
    • Recursive algorithms including factorial and Fibonacci
    • Modular programming examples
  • Structures & Unions:

    • Structure definitions and nested structures
    • Union implementations
    • Complex data type handling
  • Pointers:

    • Pointer arithmetic and manipulation
    • Memory management
    • Advanced pointer concepts including function pointers
  • Bare Metal Programming:

    • Platform types implementation
    • LED control for STM32F103C6
  • Startup & Linker:

    • Custom startup code implementation
    • Linker script development
    • Memory mapping and sections
  • Data Structures:

    • LIFO (Stack) implementation
    • FIFO (Queue) implementation
    • Linked List for student records
  • Design Patterns:

    • State machine implementation
    • Collision avoidance system design
    • UART and peripheral handling
  • Pressure Detection System:

    • Real-time pressure monitoring using state machines
    • Interrupt-driven sensor readings with threshold detection
    • Multi-level alarm system with prioritized responses
  • Student Information Management:

    • Custom FIFO-based database engine
    • Memory-efficient dynamic record allocation
    • Optimized search and update algorithms
  • Clock System:

    • PLL configuration
    • Clock tree implementation
    • APB/AHB bus configuration
  • Interrupt Handling:

    • External interrupt configuration
    • NVIC programming
    • ISR implementation
  • GPIO Programming:

    • Pin configuration and control
    • Input/Output operations
  • LCD & Keypad Interfacing:

    • LCD driver implementation
    • Keypad scanning and detection
    • Complete interface examples
  • UART Communication:

    • Driver implementation
    • Asynchronous communication
    • Buffer handling
  • SPI Protocol:

    • Master/Slave implementation
    • Data transmission protocols
    • Multiple device communication
  • I2C Protocol:

    • Driver development
    • Multi-master support
    • Address handling
  • Timer Programming:

    • Timer modes configuration
    • PWM signal generation
    • Input capture implementation
  • ADC Interfacing:

    • ADC initialization and configuration
    • Multi-channel sampling
    • DMA with ADC
  • Processor Modes:

    • Handler/Thread mode implementation
    • Stack configuration
    • Privilege levels
  • Exception Handling:

    • SVC implementation
    • PendSV handling
    • System exceptions
  • RTOS Implementation:
    • Task creation and scheduling
    • Context switching
    • Priority handling
    • Mutex implementation
    • FIFO queue management

Tools & Technologies

  • Development Tools:

    • GCC ARM Toolchain
    • Make build system
    • Eclipse IDE
  • Hardware Platforms:

    • STM32F103 Series
    • ARM Cortex-M3/M4
    • ATmega32
  • Communication Protocols:

    • UART
    • SPI
    • I2C

License

This project is licensed under the MIT License - see the LICENSE file for details.

Author

Abdallah Khater


For any questions or suggestions, please open an issue in the repository.

About

Practical embedded systems projects from the Mastering Embedded System Diploma, focusing on microcontroller programming, peripheral drivers, and low-level development in C.

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages