### freeRTOS入门笔记 #### 一、FreeRTOS基础概念与术语 **FreeRTOS**(Free Real-Time Operating System)是一款开源的实时操作系统,适用于微控制器(MCU),特别适合嵌入式系统开发。FreeRTOS提供了丰富的功能,如任务管理、时间管理、任务间通信等。 #### 二、FreeRTOS中的时间管理 1. **时间片(Time Slice)**:FreeRTOS的时间单位,默认情况下设置为1毫秒。这是任务调度的基本单位。 - **trick**:即时间片的数量,默认设置为1毫秒。 2. **延时函数**: - `vTaskDelay()` 和 `osDelay()`:这些函数用于实现任务间的延迟,使得任务能够按一定的时间间隔运行。 - 相对时间延时:基于当前时间计算延时,适用于大多数情况。 - 绝对时间延时:基于特定的绝对时间点进行延时,适用于需要精确时间控制的情况。 #### 三、任务状态 FreeRTOS中的任务状态包括: 1. **运行状态**:任务正在执行中。 2. **非运行状态**:包括以下子状态: - **阻塞状态**:任务等待某个事件发生(例如信号量、互斥锁等)。 - **暂停状态**:任务被人为地暂停,不参与调度。 - **就绪状态**:任务已经准备好运行,但因为没有轮到它而暂时处于等待状态。 #### 四、任务优先级 1. **优先级定义**:每个任务都有一个优先级,FreeRTOS根据优先级高低来调度任务执行。 2. **优先级相同任务的调度原则**:如果两个任务优先级相同,则后创建的任务将优先执行。 #### 五、任务删除 1. **VTaskDelete()**:用于删除任务,通常用于不再需要的任务,可以有效地回收资源。 #### 六、队列管理 1. **静态队列创建**:一般不推荐使用动态内存分配来创建队列,而是建议使用静态队列创建。 - `xQueueCreate()`:用于创建队列,创建时队列默认为空。 - **32位数据队列**:支持最大32位的数据类型,高八位通常保留不用。 #### 七、信号量与事件组 1. **信号量管理**: - **二值信号量**:通常用于同步多个任务。 - `BaseType_t xSemaphoreTakeISR()`:获取信号量的中断安全版本。 - **计数器**:每次获取信号量时,计数器减1;释放信号量时计数器加1。 2. **事件组管理**: - 事件组提供了一种高效的方式来传递多个事件信息。 - **32位事件组**:支持最多32个不同的事件标志。 - **24位普通事件组**:支持最多24个不同的事件标志。 - **事件通知**: - 如果参数为`pdTRUE`,则将通知值清零。 - 如果参数为`pdFALSE`,则根据通知值与1的比较结果决定是否减少通知值。 #### 八、任务通知 1. **任务通知**:用于向任务发送简单消息,可以是32位的事件组或整数值。 - **输入参数**:可以指定等待时间和通知值。 - **等待时间**:指定等待通知到达的最大时间,超过该时间则自动返回。 - **返回值**:表示未改变的通知值。 #### 九、STM32CubeMX与FreeRTOS集成 1. **STM32CubeMX**:是STMicroelectronics提供的一款图形化工具,用于初始化STM32微控制器配置,包括时钟、GPIO、外设等。 2. **宏定义**:在STM32CubeMX/FreeRTOS项目中,可以通过宏定义来启用或禁用某些特性。 - **宏定义**:例如,在FreeRTOS配置文件中可以开启或关闭特定的功能,比如任务延时等。 #### 十、总结 通过上述介绍可以看出,FreeRTOS为嵌入式开发者提供了非常强大的功能和支持,特别是对于任务管理、时间管理和任务间通信等方面。掌握FreeRTOS的基本概念和常用API是进行嵌入式系统开发的重要基础。希望本文档能够帮助初学者更好地理解FreeRTOS的核心概念,并能够在实际项目中熟练应用这些技术。
2025-07-16 09:02:54 8.1MB freeRTOS
1
该笔记是我在学习吴恩达机器学习时整理的,希望能够帮助到大家,如有错误还请大家指正。如果你想进入尖端人工智能领域,该笔记将帮助你做到这一点,掌握深度学习将为您提供许多新的职业机会。深度学习也是一种新的“超级大国”,它可以让你构建几年前还不可能实现的人工智能系统。使用流行的机器学习库NumPy和scikit-learn在Python中构建机器学习模型。学习建立和训练有监督的机器学习模型,用于预测和二元分类任务,包括线性回归和逻辑回归。 学习使用TensorFlow构建和训练一个神经网络来执行多类分类。应用机器学习开发的最佳实践,使您的模型泛化。学习将使用无监督学习技术进行无监督学习:包括聚类和异常检测。使用协同过滤方法和基于内容的深度推荐系统。 希望这个笔记能够帮助到你。
2023-04-12 12:09:31 21.16MB 机器学习笔记
1
ARM linux的有关电子文档。有ARM的入门笔记,arm的调试过程,ARM的开发流程等实用的PDF文档-learning arm Linux!
2022-11-21 18:03:12 11MB linux
1
有限元软件Patran的二次开发语言PCL入门笔记
2022-11-05 21:09:11 153KB c语言 开发语言
1
B站@同济子豪兄python数据分析神器Jupyter notebook快速入门笔记
2022-09-21 09:08:31 863KB Python
1
C6678 环境创建,工程和仿真,便于调试。简单便捷,快速查阅,方便使用。
2022-09-15 09:01:31 684KB c6678 ccs tms320c6678 中文版
课程笔记Java入门的狂神说,说明下里面的说明TXT内容是 狂神说Java入门文件,你们是打不开的由于我这电脑做了加密处理。
2022-08-15 17:02:05 1.55MB 狂神说Java入门笔记
1
南京大学慕课资源的Python玩转数据课程资料,代码整理,全部手敲,包括每一张的课程简介和代码实现,包括Python入门语法,爬虫,GUI等,作为入门资料挺好的。
2022-05-21 21:30:39 37KB Python入门笔记 爬虫 GUI创建
1
适合零基础小白学习的SQL入门知识。内含最详细的知识点以及易混点讲解,每个知识点都包含对应的案例代码详解,并且每个知识点不止一个示例代码,每句代码都有详细的注释,可以边学边练,快来一起学习吧。 文件目录: 1数据库与SQL、1.1认识数据库、1.2认识SQL、1.3数据库与表基本操作; 2查询基础、2.1 列的查询、2.2 查询条件、2.3 聚合查询; 3查询进阶、3.1 排序和分组、3.2 子查询、3.3 连接查询、3.4 CASE表达式; 4数据操纵语言和数据定义语言、4.1 复制和修改数据、4.2 使用视图、4.3 数据定义进阶、4.4 集合逻辑。
2022-05-06 18:06:25 783KB sql 文档资料 数据库 database
1
本篇文章主要介绍了超详细的Spring Boot入门笔记(总结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
2022-04-23 12:44:37 179KB Spring Boot入门笔记 Spring Boot入门
1