FreeRTOS 和裸机的区别
FreeRTOS 和裸机的区别
01 FreeRTOS 简介
什么是FreeRTOS?
特点:实时性、可移植性、可扩展性
架构:内核、任务、调度器、通信机制
什么是裸机?
特点:无操作系统、直接操作硬件
缺点:缺乏任务调度、难以管理多任务
02 FreeRTOS 和裸机的区别
多任务管理 | FreeRTOS | 裸机 |
---|---|---|
提供任务调度器 | 无任务调度器 | |
可以创建多个任务 | 只能顺序执行任务 | |
通过时间片轮转算法进行任务切换 | 需要手动切换任务 |
系统资源管理 | FreeRTOS | 裸机 |
---|---|---|
提供给内存管理 | 需要手动管理内存 | |
提供任务间通信机制 | 需要自行实现任务间通信 | |
可以动态创建和删除任务 | 无法动态创建和删除任务 |
可移植性和可扩展性 | FreeRTOS | 裸机 |
---|---|---|
可以在不同的硬件平台上运行、提供丰富的API和配置选项 | 需要根据硬件平台进行适配、功能受限于硬件平台 |
03 Cubemx 简介
特点:图形化界面、自动生成代码、支持多种 MCU
创建RTOS工程
步骤:
- 打开 Cubemx
- 选择 MCU 型号
- 配置系统时钟
- 配置 RTOS 参数
- 生成代码
04 多任务体验
- 创建任务
- 定义任务函数
- 任务函数的参数和返回值任务函数的实现
- 创建任务
- 使用 FreeRTOS 提供的 API 创建任务设置任务的优先级和堆栈大小
- 定义任务函数
- 任务调度
- 时间轮转算法
- 任务按照优先级顺序执行,每个任务执行一段时间后却换到下一个任务
- 任务切换
- 任务切换的实际、任务切换的开销
- 时间轮转算法
- 任务间通信
- 信号量
- 用于任务同步和互斥、通过信号量实现任务间的资源共享
- 队列
- 用于任务间的消息传递、通过队列实现任务间的数据交换
- 信号量
- 动态创建和删除任务
- 创建任务
- 使用 FreeRTOS 提供的 API 动态创建任务设置任务的优先级和和堆大小
- 删除任务
- 使用 FreeRTOS 提供的 API 删除任务释放任务占用的资源
- 创建任务