FreeRTOS介绍 和 将FreeRTOS移植到STM32F103C8T6

编程入门 行业动态 更新时间:2024-10-12 01:28:33

<a href=https://www.elefans.com/category/jswz/34/1764450.html style=FreeRTOS介绍 和 将FreeRTOS移植到STM32F103C8T6"/>

FreeRTOS介绍 和 将FreeRTOS移植到STM32F103C8T6

一、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操作系统是完全免费的操作系统,具有源码公开、可移 植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行。

为什么选择 FreeRTOS ?

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

FreeRTOS 资料与源码下载

官网资料:点击直达官网

祼机开发与 FreeRTOS

祼机(Bare Machine)是指硬件系统上没有任何操作系统支持的情况。在祼机开发中,开发者需要自己编写所有的驱动程序和操作系统,以实现设备控制和任务管理等功能。

FreeRTOS是一款面向嵌入式系统的实时操作系统,具有轻量级、可移植、开放源代码等特点。在祼机开发中,可以使用FreeRTOS作为操作系统,来简化开发过程。

在祼机开发中使用FreeRTOS,需要进行以下步骤:

  1. 在硬件系统上移植FreeRTOS操作系统。

  2. 编写任务函数,实现任务的具体功能。

  3. 使用FreeRTOS提供的API接口来进行任务管理、内存管理、时间管理、中断处理等操作。

  4. 根据具体需求,编写设备驱动程序,以实现对硬件设备的控制。

需要注意的是,在祼机开发中使用FreeRTOS,需要对系统硬件和软件进行深入的了解和掌握,因此开发过程较为复杂。同时,由于没有操作系统的支持,所以开发者需要对任务管理、内存管理等方面进行更加细致和严密的设计,以确保系统的稳定性和可靠性。

FreeRTOS 实现多任务的原理

  • 严格来说 FreeRTOS 并不是实时操作系统,因为它是分时复用的。
  • 系统将时间分割成很多时间片,然后轮流执行各个任务。
  • 每个任务都是独立运行的,互不影响,由于切换的频率很快,就感觉像是同时运行的一样

二、移植 FreeRTOS 到 STM32F103C8T6

手动移植

过程复杂且繁琐,对新手不友好。如有需要手动移植,可参照大佬:FreeRTOS手动移植到STM32

使用CubeMX快速移植

快速移植流程

1. 在 SYS 选项里,将 Debug 设为 Serial Wire ,并且将 Timebase Source 设为 TIM2 (其它定 时器也行)。为何要如此配置?下文解说

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

3. 时钟配置

4.打开串口

5. 选择 FREERTOS 选项,并将 Interface 改为 CMSIS_V1 。V1 和 V2 有啥区别?下文解释。
6. 配置项目信息,并导出代码
7.导出代码之后打开文件,加入下面代码和打开Use MicroLIB 使printf重定向到串口
8.测试是否移植成功

一些常见问题

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. 内核配置、函数使能的一些翻译

内核参数的理解内容非常多,可以参考大佬:FreeRTOS内核配置说明

更多推荐

FreeRTOS介绍 和 将FreeRTOS移植到STM32F103C8T6

本文发布于:2023-12-05 17:32:09,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1664849.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:FreeRTOS

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!