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

FreeRTOS 入门(一):引入并创建工程

目录

  • 一、前言
  • 二、裸机开发的四种核心模式
  • 三、FreeRTOS 核心思想与后续项目规划
  • 四、硬件配置(基于 CT117E-M4 开发板)
  • 五、从零创建 FreeRTOS 工程(CubeMX 配置)
    • 5.1 芯片选择与基础配置(RCC、SYS)
    • 5.2 时钟频率配置
    • 5.3 FreeRTOS 组件配置
    • 5.4 工程输出配置
  • 六、结尾

一、前言

大家好,我是 Hello_Embed。之前我们系统学习了 C 语言数据结构(链表、栈、队列、二叉树等),但在嵌入式开发场景中,二叉树的直接应用相对有限,后续会根据实际需求随缘更新相关内容。

从本篇开始,我们将正式切入嵌入式核心开发 ——FreeRTOS 实时操作系统的学习。本系列笔记基于 B 站韦东山 FreeRTOS 系列视频,结合蓝桥杯嵌入式比赛的筹备需求,选择 CT117E-M4 开发板(STM32G431RBT6)作为实验平台,从基础概念到工程搭建,逐步推进嵌入式多任务开发的学习。

二、裸机开发的四种核心模式

在学习 RTOS 之前,先回顾裸机开发的四种经典模式,理解 RTOS 解决的核心痛点:

2.1 轮询模式

  • 核心逻辑:主程序通过死循环依次执行所有操作,无优先级区分;
  • 缺点:某一操作耗时过长时,会阻塞后续所有操作,执行效率极低,无法满足实时性需求。

2.2 前后台模式

  • 核心逻辑:以主程序为 “后台”,中断服务程序为 “前台”,中断信号触发时打断后台进程执行;
  • 优势:初步解决操作间的直接冲突;
  • 缺点:中断处理时间过长时,仍会阻塞后台进程,未彻底消除操作间的相互影响。

2.3 定时器模式

  • 核心逻辑:基于定时器驱动,按预设频率触发不同函数执行,实现多操作的定时调度;
  • 优势:可按需求分配执行频率,比前后台模式更灵活;
  • 缺点:某一函数执行耗时过长,仍会导致其他函数推迟执行,操作间的相互影响依然存在。

2.4 基于状态机模式

  • 核心逻辑:将复杂函数拆分为若干独立步骤,每次调用仅执行一个步骤,快速切换执行不同函数;
  • 优势:大幅降低操作间的阻塞影响,执行响应更快;
  • 缺点:对于功能复杂的程序,步骤拆分难度大,维护成本高。

三、FreeRTOS 核心思想与后续项目规划

3.1 FreeRTOS 核心思想

FreeRTOS 是一款轻量级实时操作系统,核心解决方案是多任务交替执行

  • 为每个独立功能创建专属的死循环任务函数;
  • 通过任务调度器严格控制各任务的执行时间片;
  • 任务间交替执行,既消除了单任务阻塞的问题,又能让低精度需求场景下 “感觉各任务一直在运行”,彻底解决裸机模式下的操作间相互影响。

3.2 后续项目规划

结合开发板资源,后续将通过三个递进式小项目掌握 FreeRTOS 核心技能:

  1. 核心项目:打砖块游戏(将逐步用 FreeRTOS 技术优化,迭代升级);
  2. 拓展项目:音乐播放、汽车游戏;
  3. 核心项目框架(打砖块):

请添加图片描述

说明:教程默认使用 OLED0.96 寸屏,本笔记基于开发板搭载的 TFT-LCD2.4 寸屏,后续驱动文件与代码会做相应适配调整。

四、硬件配置(基于 CT117E-M4 开发板)

4.1 开发板核心参数

  • 实验平台:CT117E-M4 嵌入式开发板;
  • 微控制器:STM32G431RBT6;
  • 板载布局与外设资源:

请添加图片描述

4.2 外设扩展计划

后续将根据项目需求,通过板载接口接入额外外设(如按键、传感器等),完成 FreeRTOS 多任务联动开发,具体配置会在对应项目章节详细说明。

五、从零创建 FreeRTOS 工程(CubeMX 配置)

以下是基于 STM32G431RBT6 的 FreeRTOS 工程搭建完整步骤,使用 STM32CubeMX 可视化配置,高效快捷。

5.1 芯片选择与基础配置(RCC、SYS)

  1. 打开 STM32CubeMX,搜索并选择芯片 “STM32G431RBT6”(根据自身开发板芯片型号选择);
  2. RCC 配置(时钟源):

请添加图片描述

选择外部时钟源(HSE),确保时钟稳定性;
  1. SYS 配置(调试模式):

请添加图片描述

选择调试接口(如 Serial Wire),方便后续程序下载与调试。

5.2 时钟频率配置

根据 STM32G431 的芯片特性,配置系统时钟频率(推荐配置如下):
请添加图片描述
确保时钟树配置无误,为 FreeRTOS 提供稳定的计时基础。

5.3 FreeRTOS 组件配置

  1. 在 CubeMX 左侧组件列表中,勾选 “FreeRTOS”(选择 CMSIS-V2 接口,兼容性更强);
  2. 具体配置(任务、队列、定时器等初始配置):

请添加图片描述

初始阶段保持默认配置,后续根据任务需求添加和调整;
  1. 任务配置细节:

请添加图片描述

可先创建一个测试任务,验证工程可行性。

5.4 工程输出配置

  1. Project 配置(工程路径、名称、工具链):

请添加图片描述

选择工程保存路径,命名规范(如 “FreeRTOS_Demo_STM32G431”),工具链选择 MDK-ARM(Keil);
  1. 代码生成配置:

请添加图片描述

勾选 “生成独立的.c/.h 文件”,便于代码管理;
  1. 工程后续设置(Keil 中):
    • 修改烧录方式(对应开发板调试器,如 J-Link、ST-Link);
    • 勾选 “重载并运行”(下载程序后自动运行);
    • 取消 Pack 中 “enable” 的勾选(避免兼容性问题)。

注意:若使用 STM32F103C8T6 开发板,建议直接跟随韦东山视频的配置步骤操作;FreeRTOS 的核心思想与硬件无关,掌握基础逻辑后可跨芯片融会贯通。

六、结尾

本篇笔记完成了从数据结构到嵌入式 FreeRTOS 的过渡,明确了裸机开发的痛点与 RTOS 的核心优势,同时基于 STM32G431RBT6 完成了 FreeRTOS 工程的基础搭建。

后续将以 “打砖块游戏” 为核心,逐步学习 FreeRTOS 的多任务创建、任务调度、队列通信、定时器使用等核心技能,结合 TFT-LCD 屏驱动、按键中断、外设联动等嵌入式开发必备知识点,实现从 “裸机” 到 “多任务 OS” 的跨越。

嵌入式开发的核心是 “理论 + 实践”,后续将通过具体项目拆解知识点,确保每个环节都能动手验证。我是 Hello_Embed,FreeRTOS 系列笔记将持续更新,欢迎关注,一起扎实掌握嵌入式多任务开发的核心技能!

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

相关文章:

  • openEuler 22.03 LTS 部署 ELK(Elasticsearch+Logstash+Kibana)完整教程
  • 算法精要:高效解题思路与技巧
  • 百度站长平台链接贵阳有哪些可以制作网站的公司
  • ASP4644双PLL频率同步架构:多相降压系统的工程验证
  • 深度剖析Elasticsearch数据写入与读取:从分片同步到核心组件协同
  • 网站图片添加alt标签做下载类网站赚钱吗
  • WebStrom 打开Uniapp API 的语法提示
  • 使用ADO将excel表内容加载到mssql表中的长度问题
  • 5G技术:引领智能时代的通信革命
  • 5G技术与人工智能:重塑工业互联网的未来
  • 设计模式实战篇(六):装饰器模式 —— 让系统具备“可生长能力”的架构思想
  • 专业信息门户网站定制注册网站是哪个部门
  • 企业没有网站怎么对外做公示个人网站建设月租抵30元
  • Android应用中使用Kotlin集成OkHttp库:从基础使用到深层原理解析
  • Kafka客户端参数(一)
  • 用 Rust 从零开发一个隐写工具
  • 建设营销型网站的优势顺的品牌网站建设
  • 团雾、结冰、大风——高速公路的“隐形杀手”:智慧气象预警如何为您的路网安全保驾护航
  • PC 端常用 UI 组件库
  • 工业制品网站建设建程网是干嘛的
  • CS144 知识笔记二
  • 化妆品网站源码asp个人网站做淘宝客商城
  • 实战:使用 Python(Requests/Scrapy)接入京东商品详情 API 并解析数据结构
  • python学生成绩登记系统软件测试报告
  • GitHub Actions 和 GitLab CI/CD
  • 【Linux日新月异(七)】CentOS 7磁盘资源管理深度指南:从分区到性能调优
  • 企业网站pv是什么佛山推广优化公司
  • 机器学习常见问题之numpy维度问题
  • Redis 原理与实验
  • 网站开发职责与要求软件开发专业好吗