Skip to Content
Home /  Courses And Programs / Embedded Controller Programming with Embedded C

This course teaches students Embedded C Programming skills


used to program Embedded Controllers. The course begins with a study of the Embedded C language, including the language syntax, data types, and control structures. The students will then use Embedded C to write and run code on real embedded controller hardware. The student will learn how embedded controller hardware maps onto Embedded C data and control structures. The student will also learn concepts such as HAL (Hardware Abstraction Layer) and how it makes writing Embedded C for many different types of embedded controllers possible. At the end of the course, the student will have written and run Embedded C to control real hardware features such as GPIO (General Purpose Input/Output), ADC (Analog to Digital Conversion), and Serial I/O.


Course Highlights:

  • Embedded Software Stack
  • Interfacing with Advanced Peripherals Using Hardware Communication Protocols
  • Embedded Software Program Development and Optimization
  • Relevant Case Studies on IoT Design Challenges

Course Learning Outcomes:

  • Identify Embedded C software components and know how they are different from standard C software components
  • Recognize and use important concepts such as HAL (Hardware Abstraction Layer) to write Embedded C code that is portable to different embedded controllers
  • Utilize hardware/software signaling mechanism to implement effective communication between embedded software stack and hardware
  • Comprehend hardware communication protocols for implementation with other peripheral hardware devices such as GPIO, ADC, and Serial I/O
  • Understand embedded controller hardware and software stack and their respective differences from traditional software development

Hardware: STM32 IOT Discovery Node 915MHZ - Mfg. Part # B-L475E-IOT01A. Part can be purchased from MOUSER Electronics or Digi-Key Electronics or any other reputable electronics dealer. This microcontroller is used in all four required courses in this program.

Course Typically Offered: Online in Fall and Spring quarters.

Prerequisites: CSE-40476 C/C++ Programming II: Dynamic Memory and File I/O Concepts and ECE-40292 Embedded Systems Hardware Design or equivalent knowledge and experience.

Next Step: After completing this course, consider taking ECE-40097 Embedded Controller Programming for Real-Time Systems to continue learning.

Contact: For more information about this course, please email

Course Number: ECE-40291
Credit: 3.00 unit(s)
Related Certificate Programs: Embedded Systems Engineering