当前位置: 首页 > news >正文

学习FreeRTOS(FreeRTOS移植到STM32F103C8T6)

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

1.1 为什么选择 FreeRTOS ?

freeRTOS 是免费的;

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

简单,因为FreeRTOS的文件数量很少。

1.2 FreeRTOS 资料与源码下载

1.3 裸机开发与FreeRTOS

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

祼机开发:

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

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

FreeRTOS:

玩1秒游戏 -- 陪1秒女朋友 -- 玩1秒游戏 -- 陪1秒女朋友 -- 玩1秒游戏 -- 陪1秒女朋友 .... (累死……)

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

FreeRTOS 实现多任务的原理

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

2. 移植 FreeRTOS 到STM32F103C8T6

2.1 使用CubeMX快速移植

快速移植流程

1.选择板子型号

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

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

4.时钟按下图配置

5. 选择 FREERTOS 选项,并将 Interface 改为 CMSIS_V1 。V1 和 V2 有啥区别?下文解释。

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

3. 一些常见问题

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

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

3.2 FreeRTOS 版本问题

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

3.3 FreeRTOS 各配置选项卡的解释

Events:事件相关的创建

Task and Queues: 任务与队列的创建

Timers and Semaphores: 定时器和信号量的创建

Mutexes: 互斥量的创建

FreeRTOS Heap Usage: 用于查看堆使用情况

config parameters: 内核参数设置,用户根据自己的实际应用来裁剪定制 FreeRTOS 内核

Include parameters: FreeRTOS 部分函数的使能

User Constants: 相关宏的定义,可以自建一些常量在工程中使用

Advanced settings:高级设置

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

http://www.dtcms.com/a/541032.html

相关文章:

  • json缩放 json 缩放
  • maxkb部署,版本升级步骤与注意事项(超详细图文)
  • 测试开发话题02---概念篇
  • 网站建设推广优化排名全国工商核名查询系统官网
  • ASP Content Linking
  • 【研究生随笔】Pytorch中的卷积神经网络(1)
  • Android运行项目报错集合
  • 为什么电脑会蓝屏?怎么快速解决电脑蓝屏问题
  • js建设网站html5网站开发价格
  • ESP32学习笔记(基于IDF):OneNET物模型数据交互(控制小灯)
  • JavaScript逆向与爬虫实战——基础篇(css反爬之动态字体实现原理及绕过)
  • 浏览器在请求 js/css 静态文件时,服务器返回了 500 内部错误 500 Internal Server Error
  • CSS 实现酷炫的不规则圆角与斜角边框效果(四种方法详解)
  • 在线网站地图生成器自建购物网站多少钱
  • 网站开发的整个流程一家只做卫生巾的网站
  • xv6-riscv开发调试环境搭建(vscode+ubuntu)
  • 架构兜底五大手段:构建韧性系统的全面防御体系
  • 阿里巴巴有几个网站是做外贸的wordpress 禅意主题
  • 在 `PaddleOCR` 中配置自定义模型(如自己训练的检测/识别模型)
  • 云谷系统网站开发网站备案要收费吗
  • 前端页面初始化加载速度优化方案
  • 【数据库】金仓数据库构建集团化医院全栈信创“全链路解决方案”
  • MATLAB基于自适应动态特征加权的K-means算法
  • 我的Dify OCR 识别发票准确率测试工具
  • 免费域名申请网站大全封面型网站首页怎么做
  • 专业的网站建设化妆品备案
  • 详解使用CodeBuddy解决高难度项目问题
  • Days.js实时更新时间格式文案在切换全局语言之后的方案
  • 网站icp备案时间网站营销网站营销推广
  • 广州官方宣布网络公司网站优化网站建设