Introduction
  • What is a Realtime Operating System (RTOS)
  • Understanding Context Switching
  • Comparing RTOS with ISR and Busy Wait Systems
  • The Concept of a Thread
Setting Up
  • Notice : Development Board Choice
  • Downloading CubeIDE
  • Setting Up STM32CubeIDE
  • Installing Packages
  • Overview
Introduction to FreeRTOS
  • FreeRTOS naming conventions
  • Understanding FreeRTOS Macro Names
  • Coding : Configuring our System
FreeRTOS Thread Management
  • Overview of the TaskCreate functions
  • Coding : Creating Tasks
  • Coding : Creating Tasks from other Tasks
  • Coding : Working with Task functions
  • Coding : Understanding Task Priorities
  • Coding : Changing a Task Priority in Runtime
  • Coding : Reading the Priority of a Task
  • Coding : Suspending a Task
  • Coding : Resuming a suspended Task
  • Coding : Terminating a Task
  • Understanding Task States
  • Using the Blocked State to create delays
  • Coding : Blocking a Task
  • Coding : Executing Tasks Periodically
  • Overview of the Idle Task
  • Coding : Working with Idle Task
  • Overview of the Tick Hook
FreeRTOS Queue and Queueset Management
  • Understanding Queues and Queuesets
  • Coding : Working with Queues
  • Coding : Updating printf
  • Coding : Synchronizing Tasks with Queues
  • Coding : Sending more complex data with Queues
  • Coding : Working with Queuesets
Understanding FreeRTOS Semaphores
  • Understanding Semaphores
  • Coding : Working with Binary Semaphores
Developing Some Drivers
  • Coding : Developing some driver (Pt.1)
  • Coding : Developing some driver (Pt.2)
  • Coding : Testing the drivers
Understanding FreeRTOS Semaphores (contd.)
  • Coding : Working with a Mutex
  • Coding : Working with Counting Semaphores
Gatekeepers
  • Coding : Implementing the Gatekeeper task
FreeRTOS Software Timers
  • Overview of Software Timers
  • Coding : Working with Software Timers
  • Coding : Stopping the Auto-Reload Timer during runtime
FreeRTOS Interrupt Management
  • Coding : Receiving data from the UART using Polling
  • Coding : Interacting with Interrupt Service Routines (ISRs)
  • Coding : Receiving an entire data packet
Understanding FreeRTOS EventGroups
  • Overview of EventGroups
  • Coding : Setting and Reading EventBits in an EventGroup
  • Coding : EventGroup with Multiple Setters
  • Coding :Synchronizing Tasks using EventGroups
Understanding FreeRTOS Notifications
  • Overview of Task Notifications
  • Coding : Working with Task Notifications
The FreeRTOS Scheduler
  • Understanding the FreeRTOS Scheduler
  • Coding : Understanding the Scheduler Configuration - Preemption Only
  • Coding : Understanding the Scheduler Configuration -Pseudo Timeslicing
CMSIS-RTOS Generic APIs
  • Introduction to CMSIS-RTOS
  • Coding : Creating Threads using CMSIS-RTOS2 APIs
  • Coding : Changing Thread priorities using CMSIS-RTOS2 APIs
  • Coding : Suspending Threads using CMSIS-RTOS2 APIs
  • Coding : Resuming Threads using CMSIS-RTOS2 APIs
  • Coding : Terminating Threads using CMSIS-RTOS2 APIs
  • Coding : Putting Threads in the Blocked State using CMSIS-RTOS2 APIs
  • Coding : Creating Software Timers using CMSIS-RTOS2 APIs
  • Coding : Creating Mutexes using CMSIS-RTOS2 APIs
  • Coding : Creating Semaphores using CMSIS-RTOS2 APIs
  • Coding : Creating Message Queues using CMSIS-RTOS2 APIs
  • Coding : Creating EventFlags using CMSIS-RTOS2 APIs
Introduction
  • Notice : Start of Old Edition of the Course
  • Microcontroller Choices
  • Quick Reminder
  • Overview of the STM32F4-DISCOVERY Board
  • Overview of the TM4C123 Tiva C LaunchPad
  • Overview of the STM32F4- NUCLEO Board
  • Other components
Setting Up - Keil uVision 5
  • Downloading Keil uVision 5
  • Installing Keil uVision 5
  • Installing more packs
  • Update : Install Stellaris Driver for Windows 8 and above
  • Installing Stellaris ICDI drivers
  • Overview of Keil uVision 5