Learn FreeRTOS from scratch
4.1 (20 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
1,297 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Learn FreeRTOS from scratch to your Wishlist.

Add to Wishlist

Learn FreeRTOS from scratch

Learn about FreeRTOS basics. Practise it's APIs with different examples.
4.1 (20 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
1,297 students enrolled
Last updated 5/2017
English
English
Current price: $10 Original price: $50 Discount: 80% off
5 hours left at this price!
30-Day Money-Back Guarantee
Includes:
  • 2 hours on-demand video
  • 17 Articles
  • 4 Supplemental Resources
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I Learn?
  • Understand RTOS Concepts in FreeRTOS context
  • Working knowledge of FreeRTOS APIs
  • Understand of FreeRTOS Environment and Coding Style
  • Use Hardware Peripherals in FreeRTOS Application Development
  • Apply for Job in Embedded Industry
View Curriculum
Requirements
  • Basic C Programming
  • Some familiarity with Embedded Systems
  • Hardware: Any STM32 Board
  • Motivation!
Description

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:

  • Section   7: Interfacing Hardware (INCLUDED!!!)
  • Section   8Serial Communication (coming soon)
  • Section   9: I2C Communication (coming soon)
  • Section 10: SPI Communication (coming soon)
  • Section 11: Using Watchdog timer (coming soon)

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

  • Section 12: Writing Code, the "freeRTOS" Style (coming soon)
  • Section 13: freeRTOSConfig.h (coming soon)
  • Section 14: freeRTOS Scheduling (coming soon)

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. 

  • Section 15: A Practical Problem: Elevator Management System (coming soon)

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.

Who is the target audience?
  • Any one interested in learning FreeRTOS
  • Fresh Graduates looking to join Embedded Industry
  • Engineering Students
  • Software Development Engineers
  • Embedded Engineers
  • IoT Developers
Compare to Other RTOS Courses
Curriculum For This Course
55 Lectures
02:17:30
+
Introduction
6 Lectures 10:52

This Lecture gives you an introduction to the Video.

Preview 02:27

This lecture gives you an introduction to the FreeRTOS.

Preview 01:09

This lecture helps you to figure out why you should use a Real-Time Kernel.

Preview 03:53

This lecture gives you an introduces you to Multi-Tasking in Small Embedded Systems.

Preview 02:42

This Lecture lists down all Tools and Hardware you are going to need through out this course.

Required Tools and Hardware
00:11

This Lecture contains the things you should know before you start...

Before you Start...
00:29
+
Getting started with FreeRTOS
9 Lectures 20:11

This Lecture introduces this section.

Introduction
00:22

This lecture contains a list of all software we are going to use through out this course and links to download them.

Download all Required Software
00:18

STM32 Board Firmware: Checking if up-to-date and Updating
00:37

This lecture shows you how to add you STM32 MCU/Board to your STM32CubeMX Software before you can start creating the project.

Adding you STM32 Board to STM32CubeMX
00:36

This Lecture shows you how to create a Example project in STM32CubeMX.

Hello World: STM32CubeMX
06:30

Hello World: SW4STM32
04:48

Hello World: Running and Debugging
02:03

Adding Tracealyzer to Project
04:23

This lecture contains a list of Reference Document for STM32 devices. This lecture also contains screenshots of commonly used pinouts for different STM32 devices.

STM32 References documents
00:32
+
Task Management
17 Lectures 42:26

This Lecture introduces this section.

Introduction to Task Management
00:15

This lecture teaches you the theory of creating tasks.

Creating Tasks
06:00

Let's create some Tasks.

Example 1 Creating Tasks
03:12

Remember Task Parameters? Let's use'em.

Example 2 Using Task parameter
02:00

This Lecture help you understand the concept of priorities in Tasks.

Task Priorities
03:38

Get Ready! We are about to prioritize our tasks.

Example 3 Experimenting with priorities
00:27

This lecture shows you different states inside, "Non-Running" state.

Expanding the 'Non Running' State
05:20

Let's put that famous "Blocking" state to use and use it to create a delay.

Example 4 Using the Blocked state to create a delay
02:00

This lecture teaches you about the delay API function provided by FreeRTOS, itself.

vTaskDelayUntil()
02:05

Let's get our hands dirty and practice with this delay API provided by FreeRTOS.

Example 5 Converting the example tasks to use vTaskDelayUntil()
02:02

Lets work with both the delays we have studied up-till now understand their differences in detail.

Example 6 Combining blocking and non-blocking tasks
02:10

Well, you can still do something while sitting IDLE. This lecture teaches you how tasks can do that.

The Idle Task and the Idle Task Hook
03:14

Let's get those IDLE Tasks do some work for us.

Example 7 Defining a Idle task hook function
02:01

This lecture looks into the details of changing a task priority.

Changing Priority of a Task
02:28

Let play with Task priorities on a higher level.

Example 8 Changing Task Priorities
02:28

Deleting Task
01:47

Let's Delete some tasks.

Example 9 Deleting Tasks
01:19
+
Queue Management
6 Lectures 24:06

This Lecture introduces this Section.

Introduction to Queue Management
00:08

Characteristics of a Queue
05:21

Using a Queue
08:40

Example 10 Blocking when receiving from a queue
05:18

Example 11 Blocking when sending to a queue or sending structures on a queue
02:34

Working with Large Data
02:05
+
Interrupt Management
8 Lectures 28:13

This Lecture introduces this Section.

Introduction to Interrupt Management
00:10

Deferred Interrupt Procesing
04:49

Writing FreeRTOS interrupt handler
04:25

Example 12 Using a binary semaphore to synchronize a task with an interrupt
06:07

Counting Semaphores
05:30

Example 13 Using a counting semaphore to synchronize a task with an interrupt
02:01

Using Queues within an Interrupt Service Routine
02:38

Example 14 Sending and receiving on a queue from within an interrupt
02:33
+
Resource Management
3 Lectures 05:35

This Lecture introduces this Section.

Introduction to Resource Management
00:04

Mutexes (and Binary Semaphores)
03:05

Example 15 Rewriting vPrintString() to use a semaphore
02:26
+
Interfacing Hardware Components
6 Lectures 06:23

This lecture introduces you to this section.

Introduction
00:17

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.

GPIO on STM32
01:28

In this lecture, we will see how we can Blink our on-board LED from a Task.

Blinking OnBoard LED
01:48

Let's take input from a button from a Task and Turn LED ON/OFF accordingly.

Taking Input from OnBorad Button
01:24

Why wait for button to change its state when we have Interrupts! Lets look at 'em.

The Button Trigger
01:01

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.

Using External GPIO pins
00:24
About the Instructor
Abdur Rehman Khalil
4.2 Average rating
43 Reviews
1,420 Students
3 Courses
Electrical Engineer

I completed my Electrical Engineering from SEECS, NUST. I love programming. I have a lot of experience in IoT. I have some experience in Web Development and Game Development. For last 4 Years, I taught in Many different workshop organized by different societies at my University on Arduino, STM32 and nodeMCU etc.

Most of what I learned, like you, was online. i.e. Mostly Free. I always wanted to give back to the community. Here, I am accomplishing this goal by creating complete courses on what I learned and make this learning process easy for other.

Like all rest of Humanity, I am also imperfect. I am trying my best to present the error-free content to all of my fellow learners but sometimes, there might be some mistake. I am Sorry If something like that happens to you. Please correct me if necessary or at-lest point out whats the error and I will be very thankful to you.