RTOS
文章平均质量分 64
红叶落水
这个作者很懒,什么都没留下…
展开
-
freertos笔记-任务切换
跳出 3. 循环 (一般用于死循环的第二次循环,因为第一次肯定是溢出了,但是,可能溢出的不止一个,所以要把所有溢出的都找到,最后,找到下一个溢出值)3.5 判断是否要进行任务切换,如果溢出任务优先级高于运行任务优先级的话,会切换任务,而且切换的任务一定是是先添加进去的任务,原因1 高优先级的列表一定为空,pxIndex=>xlistend,而且添加的任务是添加到。作用场景为 当前任务和溢出的任务相同优先级,那么下一个执行的会是溢出的任务,当然如果列表里还有其他任务的话不一定是会执行这个溢出任务,原创 2023-05-25 22:33:50 · 911 阅读 · 0 评论 -
freertos笔记-任务基本构造
/删除任务,并在空闲任务中释放空间(堆栈以及TCB的空间)TCB空间如果是动态创建任务的话,就是自动分配自动回收,如果是静态创建,就需要初始化一下,而且必须是初始化StaticTask_t该结构体,而不是值初始化一个结构体指针。将该任务挂起,只有调用任务恢复函数 vTaskResume()或 xTaskResumeFromISR()才会恢复该任务,其他的队列,任务通知,delay都不能将其唤醒。表示有多少个任务要被清理。5. 如果该任务正在运行,切换上下文 portYIELD_WITHIN_API();原创 2023-05-25 22:30:54 · 775 阅读 · 0 评论 -
freertos笔记-内核函数配置
调用了几次 vTaskSuspendAll()挂起调度器,同样的也得调用几次 xTaskResumeAll()才会最终恢复任务调度器。PC = 任务函数指针 入栈。(4). 初始化任务 prvInitialiseNewTask();//以下是任务参数的初始化。(5). 将任务添加到就绪列表中 prvAddNewTaskToReadyList();xTaskGetApplicationTaskTag() 获取某个任务的标签(Tag)值。原创 2023-05-25 22:25:49 · 823 阅读 · 0 评论 -
freertos笔记-各种列表运行原理
就是说,列表中的第一个任务不是最先执行的,也许是刚一执行就立马遇到了新的切换吗 应该是,经过仿真器逐步调试,发现。有一个疑问,当节拍间隔比较小时,第一个执行的任务并不是预期的任务,节拍大一点时,才符合逻辑?2-true. 如果没有任务在运行, pxCurrentTCB指向新添加的这个任务, (这里会造成刚开始的时候,最先运行的是最后一个创建的任务)4.1.5.2 taskSELECT_HIGHEST_PRIORITY_TASK()获取就绪列表最高优先级的任务。挂起PendSV中断。原创 2023-05-25 22:24:23 · 714 阅读 · 0 评论 -
freertos笔记-队列
2.true.1.2 判断是不是互斥队列 是的话xTaskPriorityDisinherit 优先级操作。3.挂起调度器 并且队列上锁prvLockQueue 这里主要是防止中断程序对该队列有操作。2.true.1.1 获取当前队列uxMessagesWaiting值。2.true.1 复制队列中的信息prvCopyDataToQueue。2.false.1 队列满了的话,判断xTicksToWait是否要等待。2.true.2 队列集相关操作。队列项目一(32字节)队列项目二(32字节)原创 2023-05-25 22:22:48 · 721 阅读 · 0 评论 -
freeetos笔记-列表
prvAddNewTaskToReadyList时用到,有很大用途。列表是一个存放整个系统任务实时信息的数据结构,与单个任务本身是没有关系的是用来调度器用于控制任务的工具。这个函数改变了pxIndex的指向,开始了遍历,它不破坏列表结构。这个函数会将列表项插入pxindex的前面,所谓的尾部。mini列表 xListEnd使用这种类型。列表项是不断插入删除动态游走于各个列表的。获取列表下一项的函数。原创 2023-05-25 22:17:56 · 63 阅读 · 0 评论