
This Lecture gives you an introduction to the Video.
This lecture gives you an introduction to the FreeRTOS.
This lecture helps you to figure out why you should use a Real-Time Kernel.
This lecture gives you an introduces you to Multi-Tasking in Small Embedded Systems.
This Lecture lists down all Tools and Hardware you are going to need through out this course.
This Lecture contains the things you should know before you start...
This Lecture introduces this section.
This lecture contains a list of all software we are going to use through out this course and links to download them.
This lecture shows you how to add you STM32 MCU/Board to your STM32CubeMX Software before you can start creating the project.
This Lecture shows you how to create a Example project in STM32CubeMX.
Learn to set up a SW4STM32 FreeRTOS project, navigate Inc and Src folders, integrate m_function.c/h, and configure internal builder and no-optimization builds for usart2 output.
Connect your STM32 board to your computer, install drivers, locate the serial port, then debug with SW4STM32 IDE at 115200 baud and monitor the handler task output.
Copy the necessary C files into the FreeRTOS project and update compiler settings and macros. Configure includes and prepare for debugging with tracealyzer integration.
This lecture contains a list of Reference Document for STM32 devices. This lecture also contains screenshots of commonly used pinouts for different STM32 devices.
This Lecture introduces this section.
This lecture teaches you the theory of creating tasks.
Let's create some Tasks.
Remember Task Parameters? Let's use'em.
This Lecture help you understand the concept of priorities in Tasks.
Get Ready! We are about to prioritize our tasks.
This lecture shows you different states inside, "Non-Running" state.
Let's put that famous "Blocking" state to use and use it to create a delay.
This lecture teaches you about the delay API function provided by FreeRTOS, itself.
Let's get our hands dirty and practice with this delay API provided by FreeRTOS.
Lets work with both the delays we have studied up-till now understand their differences in detail.
Well, you can still do something while sitting IDLE. This lecture teaches you how tasks can do that.
Let's get those IDLE Tasks do some work for us.
This lecture looks into the details of changing a task priority.
Let play with Task priorities on a higher level.
Let's Delete some tasks.
This Lecture introduces this Section.
Learn to create and manage queues with xQueueCreate, send data to back or front with xQueueSendToBack and xQueueSendToFront, and retrieve or inspect messages using xQueueReceive, xQueuePeek, and uxQueueMessagesWaiting.
This Lecture introduces this Section.
Explore deferred interrupt processing and how binary semaphores are used for synchronization in FreeRTOS, detailing the scheme behind this coordination.
Build a FreeRTOS project with two tasks and two queues, where a periodic task sends five numbers to a queue and an ISR outputs strings to a printer task.
This Lecture introduces this Section.
This lecture introduces you to this section.
This lecture is the heart of this section. It teaches you about GPIO's on STM32. This lecture look at the GPIO types, there states and HAL GPIO driver. Understanding of content in this lecture is a pre-req. for example in the next lecture.
In this lecture, we will see how we can Blink our on-board LED from a Task.
Let's take input from a button from a Task and Turn LED ON/OFF accordingly.
Why wait for button to change its state when we have Interrupts! Lets look at 'em.
On-Board sounds good but what about External GPIOs? In this Lecture, we will look see how we can get input/set output from/to External GPIOs.
Welcome to this FREE course on FreeRTOS. This Course will help you getting started with FreeRTOS. It includes hands-on practice on STM32. All Software Tools used in this course are freely available. All you need is a STM32 Board!
This course will teach you the best way to work with FreeRTOS. Using STM32CubeMX design interface, we will generate basic code for our Application Project. Then we will use SW4STM32 IDE to write, compile and debug our application code. We will also learn how to visualize the trace output.
Why this Course?
The basic aim of this course was to remove the knowledge-and-practice gap between engineering universities and embedded industry by providing interested students with the opportunity to Learn about RTOS and practice it on some hardware, for FREE!
Course Curriculum explained
The first Section gives you an introduction to the course. Then we will get all required tools, software and hardware in section two and will create and run a Hello World Project to make sure we have everything we need setup.
Next four section, Section 3-6, introduces and explains to you different RTOS concepts in context of FreeRTOS. These section introduces different APIs provided by freeRTOS to implement those concepts. These section include a variety of application to work on those APIs explaining how to actually programming them, showing there output and verifying the result by visualizing the trace output.
Now that we you have a understanding of different APIs provided by freeRTOS, Its time to move forward and start interacting with hardware. For this purpose, following sections will be included shortly:
Now, we have a good knowledge of RTOS concepts in context of FreeRTOS and writing application for freeRTOS. It time for us to look at "freeRTOS" itself. Following Section will be included to familiarize ourselves with freeRTOS
Now, that we have dealt with the basic stuff one-by-one, let rap this course up by creating a Final Project, that will include all that we have previously learned.
About Course Content:
Most of the content i.e. Section 1,2, 7-15, of this course is written and produced by me for this course. However, Some of the concepts in Sections 3-6 are taken from different sources specially the from book “Using the FreeRTOS Real Time Kernel - A Practical Guide - Cortex-M3 Edition” by Richard Barry.
Hardware Requirements:
To follow along this course all you need is a STM32 Board! I am using STM32F103RbT6. You can use any STM32 board you want. When ever changes are required to be made, it's mentioned explicitly, both in lecture videos and code also.