WHCSRL 技术网

一起DIY四轴飞行器(三)添加实时操作系统--freeRTOS

开发环境:Windows

软件:

1. STM32CubeMX 6.3.0

2、MDK 5.14

首先了解freeRTOS系统

1.什么是 FreeRTOS?

  1. 免费就是免费。 RTOS的全称是Real Time Operating System,中文意思是实时操作系统。请注意,RTOS 不是指某个系统,而是指一种系统。比如uC/OS、FreeRTOS、RTX、RT-Thread等都是RTOS操作系统。
  2. 操作系统允许多个任务同时运行。这称为多任务处理。事实上,一个处理器内核一次只能运行一个任务。操作系统中的任务调度器的职责是决定在某个时刻运行哪个任务。任务调度在任务之间切换非常快,给人一种同时运行多个任务的错觉。
  3. 有些操作系统给每一个任务分配相同的运行时间,时间到了就轮到下一个任务,比如Unix操作系统。在 FreeRTOS 操作系统中,用户为每个任务分配一个任务优先级,任务调度器可以根据这个优先级决定下一时刻应该运行哪个任务。
  4. FreeRTOS 是一种 RTOS 系统。 FreeRTOS 非常小,可以在资源有限的微控制器上运行。当然,FreeRTOS 不仅限于在微控制器中使用。但在文件数量上,FreeRTOS 远小于 uC/OSII 和 uC/OSIII。

2.为什么选择 FreeRTOS?

RTOS类型的系统很多,比如uC/OS,资料很多,尤其是中文资料,为什么选择FreeRTOS呢?

  1. FreeRTOS 是免费的。如果你学习RTOS操作系统,uC/OS是第一选择,但如果你想做一个产品,免费的FreeRTOS操作系统是一个不错的选择。
  2. 很多半导体厂商的SDK(Software Development Kit)包都使用FreeRTOS作为他们的操作系统,尤其是带有WIFI、蓝牙等协议栈的芯片或模块。
  3. 简单,因为 FreeRTOS 中的文件数量很少。

3. FreeRTOS 功能

FreeRTOS 是一个小型的、可定制的 RTOS 系统。其特点包括:

  • FreeRTOS 的内核支持抢占式、协作式和时间片调度。
  • 提供了低功耗的 Tickless 模式。
  • 系统组件在创建时可以选择动态或静态RAM,例如任务、消息队列、信号量、软件定时器等。
  • FreeRTOS-MPU 支持 Corex-M 系列的 MPU 单元,例如 STM32F429。
  • FreeRTOS 系统简单、紧凑且易于使用。通常,内核占用 4k-9k 字节的空间。
  • 可移植性高,代码主要用C语言编写。
  • 高效的软件定时器。
  • 强大的跟踪执行功能。
  • 堆栈溢出检测功能。
  • 任务数量没有限制。
  • 无限任务优先级

二、CubeMx配置

1.打开 FREERTOS 并选择

2.因为freeRTOS需要使用系统的SysTick,所以系统时基需要修改为其他定时器

Systick 使用的是 FreeRTOS 上的调度,所以要求 Systick 的优先级最低为 15,以确保 systick 不会影响进程,只有延迟

时基中断优先级改为最高0

3. 增加系统分配的HEAP(堆)的大小。这里我分配了 10k 字节。

3.点击生成代码,MDK会打开项目并添加代码

在默认任务中的StartDefaultTask中添加如下代码,实现LED闪烁。

编译下载。

三。总结

基于上一节的内容,我们添加了freeRTOS系统,为后面的代码创建了一个基础框架。

推荐阅读