【STM32之FreeRTOS(一)】FreeRTOS移植到STM32

文章介绍了FreeRTOS实时操作系统的基本概念,强调了其在STM32F103C8T6上的移植方法,包括手动移植和使用CubeMX工具快速移植的步骤,涉及时钟源配置、版本选择及内核参数设置等关键点。
摘要由CSDN通过智能技术生成

【STM32之FreeRTOS(一)】FreeRTOS移植到STM32

一、FreeRTOS 简介

1.什么是 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版。 (以上来自百度百科)


2.为什么选择 FreeRTOS ?

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

3.FreeRTOS 资料与源码下载

点击直达官网


4.祼机开发与 FreeRTOS

祼机开发(开个玩笑):

  • 玩游戏,结果女朋友生气,分手!

  • 陪女朋友,无法玩游戏,抑郁症!

FreeRTOS: 玩1秒游戏 – 陪1秒女朋友 – 玩1秒游戏 – 陪1秒女朋友 – 玩1秒游戏 – 陪1秒女朋友 … (累死……)

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

FreeRTOS 实现多任务的原理

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

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

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

在这里插入图片描述


5.大白话总结

总而言之,FreeRTOS给人的感觉就好比能同时执行多个while循环,使多个任务“同时进行”,但其实它是分时复用的,并非真正的同时运行,由于切换任务的频率很快,就感觉像是同时运行的一样。


二、移植 FreeRTOS 到STM32F103C8T6

1.手动移植

过程复杂且繁琐,对新手不友好

如有需要手动移植,可参照以下文章: FreeRTOS移植到STM32教程(点击直达)


2.CubeMX快速移植

后续均以此工程为模板工程(muban_freertos)进行开发

2.1 将 Timebase Source 设为 TIM2 (其它定时器也行)

使用CubeMX新建一个工程后,在 SYS 选项里,将 Debug 设为 Serial Wire ,并且将 Timebase Source 设为 TIM2 (其它定时器也行)

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

裸机的时钟源默认是 SysTick,但是开启 FreeRTOS 后,FreeRTOS会占用 SysTick (用来生成1ms 定时,用于任务调度),所以需要需要为其他总线提供另外的时钟源。

在这里插入图片描述

2.2 RCC 的 HSE 设置

将 RCC 里的 HSE 设置为 Crystal/Ceramic Resonator

在这里插入图片描述

2.3 时钟配置图

时钟按下图配置:

在这里插入图片描述

2.4 选择FreeRTOS版本

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

V1 和 V2 有啥区别?

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

在这里插入图片描述

2.5 配置项目信息

配置项目信息,并导出代码即可

选择MDK

在这里插入图片描述

库配置,然后生成代码即可(后续均以此工程为模板工程进行开发)

在这里插入图片描述

2.6 完成移植

在这里插入图片描述


初步小扩展

FreeRTOS 各配置选项卡的解释

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

内核参数的理解内容非常多,可以参考以下文章: FreeRTOS内核配置说明(点击直达)

在这里插入图片描述

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

索子也敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值