深入理解STM32中的FreeRTOS操作系统

目录

FreeRTOS 介绍

什么是 FreeRTOS ?

为什么选择 FreeRTOS ?  

FreeRTOS 资料与源码下载

祼机开发与 FreeRTOS 

祼机开发:

FreeRTOS:

FreeRTOS 实现多任务的原理

二、移植 FreeRTOS 

手动移植

使用CubeMX快速移植

快速移植流程

一些常见问题

1. Timebase Source 为什么不能设置为 SysTick ?

2. FreeRTOS 版本问题

3. FreeRTOS 各配置选项卡的解释

4. 内核配置、函数使能的一些翻译


FreeRTOS 介绍

什么是 FreeRTOS

Free
即免费的,
RTOS
的全称是
Real time operating system
,中文就是实时操作系统。

注意:
RTOS
不是指某一个确定的系统,而是指一类操作系统。比如:
uc/OS

FreeRTOS

RTX

RT-Thread
等这些都是
RTOS
类操作系统。

FreeRTOS
是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管

理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满

足较小系统的需要。 由于
RTOS
需占用一定的系统资源
(
尤其是
RAM
资源
)
,只有
μC/OS-II

embOS

salvo

FreeRTOS
等少数实时操作系统能在小
RAM
单片机上运行。相对
μC/OS-II

embOS
等商业操作系统,
FreeRTOS
操作系统是完全免费的操作系统,具有源码公开、可移

植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行,其最新版本为

10.4.4
版。

为什么选择 FreeRTOS ?  

  • FreeRTOS 是免费的;
  • 很多半导体厂商产品的SDK(Software Development Kit)软件开发工具包,就使用FreeRTOS 作为其操作系统,尤其是WIFI、蓝牙这些带有协议栈的芯片或模块。
  • 简单,因为FreeRTOS的文件数量很少。
  • FreeRTOS 资料与源码下载

    最好的资料就是官网提供的资料!
    FreeRTOS – Market leading RTOS (Real Time Operating System) for embedded systems with Internet of Things extensions

    祼机开发与 FreeRTOS 

    众所周知,游戏与女朋友不可兼得!

    祼机开发:

  • 玩游戏,结果女朋友生气,分手!
  • 陪女朋友,无法玩游戏,抑郁症!
  • FreeRTOS


    1
    秒游戏


    1
    秒女朋友


    1
    秒游戏


    1
    秒女朋友


    1
    秒游戏


    1
    秒女朋友
    ….

    (累死
    ……


    CPU
    是个无情的战斗机器,可以快速在两个乃至多个任务间快速切换,并且不觉得劳累,实现

    二者兼顾。

    FreeRTOS 实现多任务的原理

    严格来说
    FreeRTOS
    并不是实时操作系统,因为它是
    分时复用
    的。

    系统将时间分割成很多时间片,然后轮流执行各个任务。

    每个任务都是独立运行的,互不影响,由于切换的频率很快,就感觉像是同时运行的一样。

    二、移植 FreeRTOS 

    手动移植

    过程复杂且繁琐,对新手不友好。如有需要手动移植,可参照以下文章:

    (30条消息) FreeRTOS移植到STM32_不秃也很强的博客-CSDN博客
    (点击直达)

    使用CubeMX快速移植

    快速移植流程

    1.

    SYS
    选项里,将
    Debug
    设为
    Serial Wire
    ,并且将
    Timebase Source
    设为
    TIM2
    (其它定

    时器也行)。

     

    2.

    RCC
    里的
    HSE
    设置为
    Crystal/Ceramic Resonator

    3.
    时钟按下图配置

    4.
    选择
    FREERTOS
    选项,并将
    Interface
    改为
    CMSIS_V1

    5.
    配置项目信息,并导出代码。

    一些常见问题

    1. Timebase Source 为什么不能设置为 SysTick ?

    裸机的时钟源默认是
    SysTick
    ,但是开启
    FreeRTOS
    后,
    FreeRTOS
    会占用
    SysTick
    (用来生成
    1ms

    定时,用于任务调度),所以需要需要为其他总线提供另外的时钟源。

    2. FreeRTOS 版本问题

    V2
    的内核版本更高,功能更多,在大多数情况下
    V1
    版本的内核完全够用。

    3. FreeRTOS 各配置选项卡的解释

  • Events:事件相关的创建
  • Task and Queues: 任务与队列的创建
  • Timers and Semaphores: 定时器和信号量的创建
  • Mutexes: 互斥量的创建
  • FreeRTOS Heap Usage: 用于查看堆使用情况
  • config parameters: 内核参数设置,用户根据自己的实际应用来裁剪定制 FreeRTOS 内核
  • Include parameters: FreeRTOS 部分函数的使能
  • User Constants: 相关宏的定义,可以自建一些常量在工程中使用
  • Advanced settings:高级设置
  • 4. 内核配置、函数使能的一些翻译

    内核参数的理解内容非常多,可以参考以下文章:

    (30条消息) FreeRTOS系列第6篇—FreeRTOS内核配置说明_vassertcalled_研究是为了理解的博客-CSDN博客

    物联沃分享整理
    物联沃-IOTWORD物联网 » 深入理解STM32中的FreeRTOS操作系统

    发表评论