Overview
C programming with a focus on how to use it for Embedded System Developments.
Course Outline
C Basic data types
- Integer types
- Floating point types
- Pointers (pointer arithmetic, pointer derefencing)
- Arrays
- The relationship between arrays and pointers
- Enums
Programming constructs
- if – else statements
- switch statements
- while loops and do – while loops
- for loops
- goto statements
- Functions in C
- Function prototypes
- Understanding C’s call by value mechanism for passing arguments
- Implementing functions
- Calling functions
- Using pointers to pass values by reference
- Passing arrays to functions
- Understanding C’s return value mechanism
- Using pointers to return values by reference
Data Structures
- Defining data structures
- Accessing and manipulating the elements of a data structure
- Pointers to data structures
- The arrow (->) operator
- Using a pointer to traverse an array of data structures
Advanced topics
- Pointers to pointers
- Function pointers
- Const and static keywords – their meanings and uses
- Casts and casting Using void * pointers
- Data structures containing pointers to data structures
- Data structures containing function pointers
- Function pointers and table driven programming
- Bit fields in data structures
- Unions
- Using arrays to implement circular buffers and stacks
- Modules as data structures and interfaces
- Dynamic data structures and their uses
- Singly linked lists
- Doubly linked lists
Overview of the C standard library
- putc, putchar, getc, getchar
- printf, scanf
- String manipulation functions (strcpy, strcat, …) Embedded System Oriented Topics
- Setting up port addresses
- Defining bit oriented data structures
- Compiler specific features
- #pragmas
- Non ANSII C extensions
- Accessing and manipulating special function registers
- Implementing interrupt handlers
- Calling assembly code from C
- Calling C from assembly code
- Linkers and linker scripts
- Understanding target peripheral device libraries and their uses
- Implementing your own device libraries
- Timers and their uses
- Hardware timers
- Software timers
Basics of event driven programming
- Port I/O – flashing LEDs
- Software delays
- Keypad scanning
- Basic RS232
- Basic data acquisition and sensor interfacing
- Working with EEPROM (on chip and SPI/I2C)