Mastering Embedded C Programming on LPC 1768 Platform

Duration – 120 hrs.

Program Objective:

To equip learners with industry-relevant technical skills and enhance their job readiness through project-based learning, hands-on tool exposure, and real-world application deployment, thereby preparing them for successful employment in core domain areas

Program Structure:

  • Embedded Hardware and C Programming – 60 hrs.

    • Embedded hardware and Microcontroller Fundamentals
    • Mastering C and Embedded C
  • Firmware development Programming – 60 hrs.

    • LPC1768 MCU Bare-Metal Programming
    • HAL and Driver Development
    • Embedded Protocols
    • FreeRTOS Programming
  • Experiential Project Based Learning

    • Embedded Project Work on Multi-Peripheral Integration and Real-Time Data Acquisition
      (AGILE + SCRUM + GIT + GitHub)

Program Outcomes

  • Build strong logical, structured, and systems programming skills
  • Build a strong foundation in embedded programming, microcontroller interfacing, and real-time system design.
  • Empower students to design intelligent embedded systems and gain expertise in communication protocols
  • To equip engineering students with industry-relevant software and hardware skills, enhancing their employability in the embedded systems and AI domains
  • Integration of hardware and software skills, enabling participants to contribute effectively to cross-functional teams

Tools / Platform:

  • Operating System: Ubuntu (Linux OS with GCC compiler), WSL (Windows Subsystem for Linux)
  • IDEs / Compilers: Code::Blocks, Visual Studio Code, Dev-C++
  • Microcontroller Board: LPC1768 NUCLEO Board
  • Development Tools: LPCXpresso IDE, Flash Magic
  • RTOS: FreeRTOS
Embedded Hardware and C programming (60 hrs.)
Embedded Hardware and Microcontroller Fundamentals
Signal Conditioning Circuits:
Operational Amplifiers (Op-Amps): Amplifiers, Buffers/Voltage Followers, Comparators, Filters (Current-to-Voltage Converters Active), Voltage Dividers
Analog-to-Digital Converters (ADCs)- Purpose, Types, Key Specs , Digital-to-Analog Converters (DACs),Oscillator Circuits : Crystal Oscillator, RC Oscillator Power Management Circuits: Voltage Regulators, Power-on Reset (POR) / Brown-out Reset (BOR) Circuits, Current Limiting Circuits, MOSFETs/BJTs (as switches), Motor Driver ICs (e.g., H-bridges)
Digital Logic: Logic gates (AND, OR, NOT, XOR, NAND, NOR, XNOR) and truth tables. Basic combinational logic : ADDERS, MUX, DEMUX, ENCODER, DECODER Basic Sequential logic : FLIP-FLOPS,SHIFT REGISTERS, COUNTERS
Mastering C and Embedded C
Literals, Data types, qualifiers, variables: Operators: Unary, Binary and Ternary, Presidency and associativity of operators evaluation Control flow statements: Selective structures:: if-else, switch .Iterative structures: while,do-while,for loop, use of break and continue in loop Modular Programming using functions: Function statements- function declaration, function definition, function call, parameter passing techniques: call by value,call by address
Numeric Arrays -1D and 2D arrays : Array declaration and Initialization, input , processing and output of array data Character Arrays, String functions, Storing string in R?W memory . RO memory. Bitwise Operations: AND, OR, XOR, NOT, left shift, right shift. (Crucial for register manipulation)
Storage classes: auto, static, extern register, Pointers: Declaration, Initialization, Types of pointers, Pointer arithmetic, void pointer, NULL pointer Pointers:Advanced pointer usage, pointers to functions, and their role in ISRs and callbacks. Memory Management: malloc(), free(), stack vs. heap memory
Data Structures: Structures, unions, enums, and their alignment in memory volatile and const keywords: Their importance in embedded programming. Macros and pre-processor directives: Conditional compilation (#ifdef, #ifndef), #define
Compiler and Linker Concepts: cross-compilation ,Startup code and reset sequence,Linker script and memory sections (.text, .data, .bss, etc.) Good Coding Practices : Code style and conventions (MISRA C ), Static analysis and code quality tools Version control with Git and GitHub
Firmware Development Programming (60 Hours)
LPC1768 MCU Bare-Metal Programming
LPC1768 MCU Architecture & Features
ARM Cortex-M3 CPU, on-chip Flash & SRAM
Peripherals: GPIO, Timers, ADC, DAC, UART, SPI, I2C, PWM, CAN, USB, Ethernet
Supports multiple power modes and PLL clock system
LPC1768 Board FeaturesBuilt-in debugger/programmer (CMSIS-DAP/J-LINK)
Arduino-compatible headers
3.3V/5V power supply support
Expansion headers for GPIO and communication
Software Tools
IDE: LPCXpresso / Keil uVision / VS Code (GCC ARM)
Programmer: Flash Magic
RTOS: FreeRTOS
GPIO
Modes: Input, Output, Alternate function
Registers: FIODIR, FIOSET, FIOCLR, FIOPIN
Tasks: LED blink, push button control, GPIO interrupt
Interrupts & NVIC
Handles multiple interrupt sources
Registers: ISER, ICER, ISPR, ICPR, IPR
Tasks: Enable GPIO interrupts, write ISR
Timers & PWM
Modes: Timer, Counter, PWM
Registers: TCR, PR, MR, IR
Tasks: Delay generation, LED dimming, motor contro
ADC
10-bit resolution, multiple channels
Registers: ADCR, ADDR, ADINTEN
Tasks: Read analog sensors, single/continuous conversion
HAL and Driver Development
Introduction to HAL and CubeMX : Introduction to STM32CubeMX for project configuration and code generation Using the generated code and project structure, HAL APIs for GPIO, Timers, and ADC Interfacing a push button and controlling an LED using using STM32CubeMX and HAL APIs.
Generating a specific frequency square wave using STM32CubeMX and HAL APIs. Controlling LED brightness using using STM32CubeMX and HAL APIs. Driver architecture: Layered approach
Writing a custom driver for a sensor or peripheral, Driver API design and best practices, Integrating the developed driver into a main application.
Embedded Protocols
UART/USART (Universal Asynchronous Receiver-Transmitter) : UART protocol basics: Baud rate, data bits, stop bits, parity. UART communication using HAL and bare-metal (polling, interrupt, DMA) I2C (Inter-Integrated Circuit) : I2C protocol basics: Master/slave, start/stop conditions, ACK/NACK, Interfacing I2C devices (e.g., EEPROM, temperature sensor) SPI (Serial Peripheral Interface) : SPI protocol basics: Master/slave, MOSI, MISO, SCLK, NSS, Interfacing SPI devices (e.g., SD card, external Flash memory, display)
FreeRTOS Programming
Introduction to RTOS and FreeRTOS: Tasks, threads, and concurrency, Task states: Running, ready, blocked, suspended, Task scheduling: Pre-emptive vs. co-operative Introduction to FreeRTOS kernel, configuration, and porting, Creating a FreeRTOS project in STM32CubeIDE and running multiple tasks. Inter-Task Communication : Queues - For message passing between tasks. Implementing a task communication system using queues to process data from a sensor.
Task Communication : Semaphores- Binary, counting, and mutexes for resource protection. Using a mutex to protect a shared resource (e.g., a shared sensor value). Event Groups: For task synchronization based on multiple events.

Software Timers: For periodic tasks.
Project Development and Integration
Embedded Project Work on Multi-Peripheral Integration and Real-Time Data Acquisition (AGILE+SCRUM+GIT+GITHUB) Designing and implementing a multi-threaded system using FreeRTOS on STM32 that 1.Reads sensor data (e.g., temperature) via an I2C/SPI driver
2.Displays the data on a serial terminal using UART 3.Controls an actuator (e.g., a fan using PWM) based on the sensor value 4.Uses an RTOS to manage tasks for sensing, communication, and control.

Enquire Now

Enquire Now

Enquire Now

Please Sign Up to Download

Please Sign Up to Download

Enquire Now

Please Sign Up to Download




    Enquiry Form