STM32 单片机开发 - FreeRTOS 实时操作系统

一、在线下载 FreeRTOS 内核

图 1
图 2


二、FreeRTOS 实时操作系统介绍

FreeRTOS 实时操作系统 是一种轻量型实时操作系统 ,实现快速响应

FreeRTOS 实时操作系统是 RTOS 实时操作系统下的一个版本(子集)


RTOS 实时操作系统具有很多版本:FreeRTOS、RT-Thread、Thread-X......

2.1 裸机开发和系统开发的区别

裸机开发:不使用操作系统,所有驱动代码按照 main.c 中的编写顺序按顺序执行代码。

系统开发:使用操作系统,所有驱动代码支持多进程 / 多线程的并发处理机制,可以实现快速响应
FreeRTOS 实时操作系统 = 裸机开发 + 多线程(多任务)并发处理

2.2 多进程和多线程的区别

  1. 资源量:进程是资源分配的最小单位,线程是任务调度的最小单位,1 个线程 = 1 个任务;
  2. 安全性:进程的用户空间相互独立(IPC 机制),线程同享同一进程下的资源(同步互斥);
  3. 效率:多线程的并发处理的效率更高(进程的上下文切换)。

三、FreeRTOS 实时操作系统的特点

  • 小巧与灵活性:FreeRTOS 非常小巧,适合在资源有限的微控制器中运行,但其应用并不仅限于微控制器。开发者可以根据实际应用需求进行定制和配置,选择所需的功能模块。
  • 可移植性:FreeRTOS 支持多种处理器架构,并能在不同的硬件平台上运行,这为开发者提供了更大的硬件选择灵活性。
  • 实时性:FreeRTOS 提供严格的任务调度机制,确保任务按照预定的优先级和时间约束执行,使其非常适合对时间要求较高的应用场景,如工业控制和汽车电子等领域。
  • 丰富的功能:包括任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等。
  • 开源与免费:FreeRTOS 是一个开源项目,其源代码可以免费获取和使用,这有助于促进其在开发者社区中的普及和发展。
  • FreeRTOS 的应用领域非常广泛,包括但不限于工业控制、汽车电子、智能家居、医疗设备、航空航天等需要实时响应和稳定运行的领域。

四、FreeRTOS 实时操作系统的任务调度机制

linux 操作系统的任务调度机制:默认使用时间片轮询机制,也可以使用抢占式任务调度机制;

FreeRTOS 操作系统的任务调度机制:默认使用抢占式任务调度机制,也可以使用时间片轮询机制。

抢占式任务调度机制:给每个任务/线程分配对应的优先级等级,优先级高的先执行,优先级低的后执行。

注意

优先级等级的数字越小,优先级越高

优先级相同时,使用时间片轮询机制


五、任务的状态

  • 就绪态:任务的资源分配成功,等待被运行。
  • 运行态:被分配资源的任务使用系统的时间片,成功开始运行。
  • 阻塞态:任务中存在耗时、延时(Delay 函数、超时检测等)时,任务处于阻塞状态;处于阻塞状态的任务,可以被别的任务抢占系统的资源,从而运行。
  • 挂起态:在任务 1 中使用挂起函数挂起任务 2 ,使任务 2 处于挂起状态,系统不会调用任务 2;需要在别的任务/任务 1 中使用解除挂起函数,解除任务 2 的挂起,使任务 2 处于就绪态。
    图 3 任务的状态

六、CubeMX 中配置 FreeRTOS

图 4 设置 FreeRTOS
图 5 heap_1 - heap_5 的选择
图 6 设置 USART1
图 7 设置 Debug 下载接口
图 8 配置 X-CUBE-FREERTOS

将如图所示的 CMSIS RTOS2 选项勾上,在下面进行任务的配置。
图 9 创建任务的相关参数
图 10 新任务创建参数 一个任务的参数有:任务名、当前优先级、任务大小、任务的入口函数等。
图 11 FreeRTOS 代码生成出现 RTOS 相关警告
如果出现如图 11 所示的 RTOS 相关警告,解决方法如下图:
图 12 警告解决方法


七、代码分析

相关推荐
刘延林.2 分钟前
esp32 s3+micpython快速验证ML307R 是否能正常连接4G
单片机·嵌入式硬件
不做无法实现的梦~5 小时前
86步进电机和DM860H驱动器的使用方法和记录
单片机·嵌入式硬件
Aaron15886 小时前
RFSOC+VU13P/VU9P+GPU多通道同步一体化解决方案
人工智能·嵌入式硬件·算法·matlab·fpga开发·硬件架构·基带工程
所见即所得111116 小时前
stm32烧录过程中串口问题(串口被占用无法使用)
stm32·单片机·嵌入式硬件
Freak嵌入式6 小时前
WIZnet-EVB-Pico2开始,用MicroPython玩转以太网开发
arm开发·人工智能·python·嵌入式硬件·机器人·嵌入式·micropython
Ligocious6 小时前
stm32---1.两种开发方式点亮LED
stm32·单片机
黑白园7 小时前
STM32F103C8TC使用ST-Link下载
stm32·单片机·嵌入式硬件
时空自由民.7 小时前
嵌入式MCU的中断系统工作流程及其原理
单片机·嵌入式硬件
LCG元7 小时前
STM32实战:基于STM32F103的智慧教室环境监控系统(CO₂+光照+人数统计)
前端·stm32·嵌入式硬件
振南的单片机世界7 小时前
推挽输出:上管推、下管拉,驱动强但不“合群”
arm开发·stm32·单片机·嵌入式硬件