- 博客(15)
- 收藏
- 关注
原创 FreeRTOS学习记录-优先级翻转
摘要:本文探讨了实时操作系统中使用二值信号量时出现的优先级翻转现象。当高、中、低优先级任务共享信号量时,低优先级任务长时间占用信号量会导致高优先级任务阻塞,而中优先级任务持续运行,形成优先级倒置。实验通过创建二值信号量和不同优先级任务,验证了这一现象:当中优先级任务运行时,低优先级任务被剥夺CPU使用权,直到释放信号量后高优先级任务才能执行,从而违背了预期的任务优先级顺序。
2025-09-21 19:53:53
203
原创 FreeRTOS学习记录-计数信号量
本文介绍了FreeRTOS中计数信号量的概念、API接口及实现方法。计数信号量是长度大于1的队列,用于表示资源可用数量,具有释放(加1)和获取(减1)操作。文章详细说明了计数信号量的动态创建函数参数、中断版本释放接口和任务级获取接口,并通过实验展示了信号量的使用流程:定时器1秒时基初始化时释放信号量,任务4秒延时后获取信号量,循环操作使可用资源数从0开始按0→4→3→7→6...的规律变化。
2025-09-07 20:57:43
433
原创 FreeRTOS学习记录-二值信号量
本文介绍了二值信号量的使用方法和实验验证。主要内容包括:二值信号量的创建、释放和获取API接口说明,以及任务级和中断级的操作差异。通过实验验证,使用定时器中断每隔1秒释放信号量,任务成功获取信号量后打印字符串,结果显示时间间隔准确为1秒,共打印12行字符串,验证了二值信号量在任务同步中的有效性。
2025-08-26 23:08:29
191
原创 FreeRTOS学习记录-使用队列传输大的数据单元
比如现在需要传输一个数组,数组大小为2048字节,此时不可能在创建队列的时候申请队列大小为2048字节,那么此时要想使用队列传输大数据的时候应该传输要传输大数据块的指针,通过指针去传输它。
2025-05-18 20:36:06
344
原创 FreeRTOS学习记录-读队列阻塞
某个任务试图读一个队列时,其可以指定一个阻塞超时时间。在这段时间中,如 果队列为空,该任务将保持阻塞状态以等待队列数据有效。当其它任务或中断服务例程 往其等待的队列中写入了数据,该任务将自动由阻塞态转移为就绪态。当等待的时间超 过了指定的阻塞时间,即使队列中尚无有效数据,任务也会自动从阻塞态转移为就绪态。由于队列可以被多个任务读取,所以对单个队列而言,也可能有多个任务处于阻塞 状态以等待队列数据有效。这种情况下,一旦队列数据有效,只会有一个任务会被解除 阻塞,这个任务就是所有等待任务中优先级最高的任务。
2025-04-27 22:30:58
479
原创 FreeRTOS学习记录-空闲任务和空闲任务的钩子函数
通过空闲任务钩子函数(或称回调,hook, or call-back),可以直接在空闲任务中添 加应用程序相关的功能。空闲任务只会在其它任务都不运行时才会被执行(除非有应用任 务共享空闲任务优先级)。测试处系统处理裕量(空闲任务只会在所有其它任务都不运行时才有机会执行,所 以测量出空闲任务占用的处理时间就可以清楚的知道系统有多少富余的处理时 间)。在空闲任务的钩子函数中,当任务一被运行五次之后,将任务一删除。定义任务相关的参数,如任务栈的大小,任务的优先级,任务句柄。定义空闲任务的钩子函数。
2025-04-12 09:57:20
349
原创 FreeRTOS学习记录-绝对延时
vTaskDelayUntil()类似于 vTaskDelay()。vTaskDelay() 的参数用来指定任务在调用 vTaskDelay()到切出阻塞态整个过程包含多少个心跳周期。任务保持在阻塞态的时间量由 vTaskDelay()的入口参数指定,但任务离开阻塞态的时刻 实际上是相对于 vTaskDelay()被调用那一刻的。vTaskDelayUntil()的参数就是用来指定 任务离开阻塞态进入就绪态那一刻的精确心跳计数值。
2025-04-10 20:41:39
321
原创 FreeRTOS学习记录-任务优先级
由于任务二的优先级大于任务一,并且任务二没有调用任何阻塞函数,所以LED灯不亮,始终处于灭的状态。FreeRTOS 的任务优先级是一个 数值,数值越大,优先级越高。相同优先级的任务采用时间片轮转调度;(可配置为更大值,但受内存限制)。高优先级任务抢占低优先级任务;(空闲任务通常在此优先级)。数值越大,优先级越高;
2025-04-08 20:10:28
651
原创 FreeRTOS学习记录-任务创建
在 FreeRTOS 中,任务的创建是通过或API 函数实现的。在本工程中使用方法创建。在进行任务创建之前,需要先关闭中断。在任务创建结束后,打开中断。启动任务调度器。
2025-04-07 22:24:52
191
原创 1.FreeRTOS学习记录-内核实现之列表和列表项的实现
1.数据类型的定义:1.数据类型的定义:#else#endif#endif2.配置宏的定义。
2024-01-04 19:33:49
1662
原创 【学习笔记】软件模拟I2C
I2C是串行总线的一种,属于半双工通信(数据的发送和接收不能同时进行),由两线组成(时钟线SCL和数据线SDA),采用主从通信模式(支持多主机模式)。
2023-04-27 23:33:05
4919
2
CAN报文数据解析工具
2025-09-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅