Consultancy and Total Solutions Training Provider for Embedded Systems, Electronics and Electrical Engineering, Programming, Computing, Operations, ISO9000, ISO14000 and Management.

Bridging the Gap

Training Courses

C Programming for Embedded Systems

Course id: 0001


C is the programming language of choice for the vast majority of embedded applications, and will be the dominant language for the foreseeable future with the increasing demand for ever sophisticated, miniature and intelligent appliances. Embedded system engineers fluent in C are, therefore, highly sought after to fulfill industry skillset demand.

This course is specifically tailored for engineers intending to develop reliable embedded application, with an emphasis on structured coding, modularity, reliability and resource allocations. The topics covered are suitable for a wide range of embedded system from resource constrained microcontroller-based systems to operating-system capable single-board computers.

Course highlight

Participants will have practical experiences developing real-world embedded applications.

What participants say about the course
The following are some verbatim statements from the participants:

  • Honestly, this course is very informative & fun -- Nov 2013

What you will learn

This course comprises of the following main topics:
  • Constructs for embedded systems
  • Reducing overheads
  • Modular programming
  • Interfacing peripherals
  • Debugging
  • Interrupt handling
  • Embedded framework
Participants would, in addition, be introduced to the relevant MISRA (Motor Industry Software Reliability Association) guidelines for C coding of safety critical systems throughout the course.

Who should attend

This course is particularly suited for design engineers, application engineers, software engineers and programmer responsible for designing, implementing and verifying embedded systems.


Participants must have some C programming experience (PC environment sufficient). Participants lacking C programming experience are highly recommended to attend the 'C Programming for Engineers' course before hand.

Course methodology

This course is presented in a workshop style with example-led lectures interlaced with hands-on practical for maximum understanding.

Course duration

4 days.

Course structure

  • Overview
    • History of C
    • Overview of Embedded Systems
    • Why C for embedded systems?
  • Constructs for embedded systems
    • Data types
    • Arrays and pointers
    • Structures
    • Limitations
  • Reducing overheads
    • Data range
    • Constant folding
    • Strength reduction
    • Recursion elimination
    • Function limitations
  • Modular programming
    • Layered model
    • Portability and reuseability
  • C preprocessors
    • Preprocessor directives
    • Conditional compilation
    • Header files
    • Handling multiple source files
  • Structured programming
    • State Transition Diagram
    • Algorithmic State Machine
  • Interfacing peripherals
    • Memory mapped peripherals
    • Accessing and controlling I/O ports, timers, PWM, ADCs, SPI/I2C and UARTs
    • Integrating external components
  • Debugging
    • Simulators
    • In-circuit debugging
    • Debugging console-less systems
  • Interrupt
    • Overview
    • Setup
    • Prioritising
    • Handling
  • Embedded framework
    • Round robin framework
    • Time/event triggered framework
    • Scheduler
  • Embedded OS
    • Overview


Dr Royan Ong

Course Schedule





News on ProvenPac

  ProvenPac Sdn. Bhd.
  C-4-3 Gembira Park,
  Jalan Riang, 58200
  Kuala Lumpur, Malaysia

  Tel: +603 03 5889 5889

No public course
currently scheduled.


Please inform me when
this course is scheduled.


Please contact me to
arrange in-house training.