
Learn to find the first and second largest values in an array and implement basic array operations, building the array as an abstract data type with a prototype.
Develop an array adt by wrapping a fixed-size array in a struct, tracking capacity and length, and enabling insertion, merging, and other operations.
Explore array insertion by appending elements and inserting at a given index, including length checks, capacity, and shifting elements to create space in an array data type.
Compute the statistical characteristics of an array, including the minimum value, maximum element, total sum, and the mean of the elements, by implementing iterative functions.
Explore structures and unions as user-defined types that store related data, and learn that a structure defines a memory layout while typedef creates a new type alias without extra memory.
Understand unions as a memory-efficient alternative to structures, storing only one field at a time. The size equals the largest member, and you declare with the keyword union or typedef.
Compare Moore and Mealy finite state machines: Moore outputs depend only on the current state, while Mealy outputs depend on state and inputs; illustrated with traffic lights and state graphs.
Implement a Moore finite state machine for a traffic light, starting from go north, processing outputs, delays, and input-driven next states with north central and east central sensors.
Explains the singly linked list, where each node has a next pointer and the list ends with null, and how to insert at head, tail, or a middle position P.
Develop an ADC driver to collect analog data by configuring P1 as analog, enabling ADC clock, selecting software trigger, starting conversion, polling completion, and returning the analog value.
Develop a temperature sensor driver that uses the ADC to sample the MCU's internal temperature every second, configuring timer two and converting results to Celsius.
Learn deletion functions for a doubly linked list, including delete last, delete from front, and delete at a position, with head, current, and temp pointers.
Explore circular linked lists, their lack of a null terminator, and safe traversal using the head and a current pointer. See their use in resource sharing in operating systems.
Welcome to the Embedded Systems State Machines &Data Structures course.
This course is for anyone seeking to improve their embedded firmware development skills. The course focuses on the use of state machines and data structures to write quality firmware for embedded devices.
By the end of this course you will be able to build Finite State Machines for Embedded Applications, be able to build a Fixed Scheduler using Finite State Machines, be able to build a Traffic Light Control System using Finite State Machines. You will also master the Techniques for Effectively Implementing Data Structures on Embedded Devices.