FreeRTOS介绍 和 将FreeRTOS移植到STM32F103C8T6

目录

一、FreeRTOS 介绍

什么是 FreeRTOS ?

为什么选择 FreeRTOS ?

FreeRTOS 资料与源码下载

祼机开发与 FreeRTOS

FreeRTOS 实现多任务的原理

二、移植 FreeRTOS 到 STM32F103C8T6

手动移植

使用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 ?

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

为什么选择 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内核配置说明

  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
FreeRTOS移植STM32F103C8T6微控制器上需要一些步骤。下面是大致的移植指南: 1. 了解STM32F103C8T的硬件资源和特性:包括内核、外设、时钟等。这将帮助你适配FreeRTOS到特定的硬件平台上。 2. 准备开发环境:安装适当的集成开发环境(IDE)和编译器,例如Keil MDK、IAR Embedded Workbench等。确保你能够成功编译和烧录STM32F103C8T6芯片。 3. 下载和配置FreeRTOS:从FreeRTOS官方网站下载最新的FreeRTOS源代码,并解压到你的项目目录中。在源代码中,你可以找到针对不同处理器架构的移植文件夹,如ARM Cortex-M3。 4. 配置FreeRTOS:根据STM32F103C8T6的硬件特性,修改FreeRTOS配置文件(FreeRTOSConfig.h)以适配你的系统。这包括调整任务堆栈大小、优先级和其他配置参数。 5. 创建启动文件:根据你的编译器和开发环境,创建适当的启动文件(startup.s或startup_stm32f10x_md.s)并配置启动向量表、堆栈设置等。 6. 编写硬件相关的启动代码:根据STM32F103C8T6的特性,编写硬件初始化和启动代码,例如初始化系统时钟、外设等。 7. 编写FreeRTOS任务:根据你的应用需求,编写FreeRTOS任务代码,并使用FreeRTOS提供的API创建和管理任务。你可以利用STM32F103C8T6的外设和中断来实现任务间的通信和同步。 8. 编译和烧录:使用你的编译器编译项目,并将生成的可执行文件烧录到STM32F103C8T6芯片上。 以上是一个大致的移植流程。具体的步骤可能因开发环境和需求而有所不同。在进行移植之前,建议先阅读FreeRTOS的官方文档,了解更多关于移植和配置的详细信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

热爱嵌入式的小佳同学

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

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

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

打赏作者

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

抵扣说明:

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

余额充值