![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
FreeRTOS
文章平均质量分 89
Asita_c
属实被自己菜哭了
展开
-
FreeRTOS中的任务延时列表(笔记)
xNextTaskUnblockTime 的值等于当前系统时基计数器的值 xTickCount 加上任务需要延时的值 xTicksToDelay。任务延时列表表维护着一条双向链表,每个节点代表了正在延时的任务,节点按照延时时间大小做升序排列。每次在SysTick中断就比较一下系统时基计数器的值xTickCount与下一个任务的解锁时刻变量xNextTaskUnblockTime的值,当 xTickCount 的值与 extTaskUnblockTime 相等时,则表示该任务延时到期了,需要将该任务就绪。原创 2023-05-19 11:40:07 · 549 阅读 · 1 评论 -
多优先级(笔记)
从最高优先级对应的就绪列表数组下标开始寻找当前链表下是否有任务存在,如果没有,则uxTopPriority减一操作,继续寻找下一个优先级对应的链表中是否有任务存在,如果有则跳出while循环,表示找到了最高优先级的就绪任务。就绪列表是一个数组,数组里面存的是对应就绪任务的TCB的xStateListItem节点,数组下标对应任务的优先级,优先级越低,对应数组下标的数字越小。例子,如图所示,该变量的前导零的个数为6。中定义的静态变量,用于表示创建的任务的最高优先级,默认初始化为0,即空闲任务的优先级。原创 2023-05-12 11:31:18 · 557 阅读 · 0 评论 -
FreeRTOS中的空闲任务与阻塞延时(笔记)
软件延时是让CPU等待达到延时效果。而RTOS的优势是可以充分发挥CPU的性能,永远不会让CPU闲着。RTOS中的延时叫做阻塞延时/* 获取空闲任务的内存 */ StackType_t IdleTaskStack [ configMINIMAL_STACK_SIZE ];在FeeRTOSConfig.h中定义的宏# define configMINIMAL_STACK_SIZE((unsigned short) 128) //(字,即512个字节)原创 2023-05-05 23:33:42 · 1659 阅读 · 0 评论 -
FreeRTOS中临界段的保护(笔记)
临界段是指在执行时不能被中断的代码段。在FreeRTOS中,临界段最经常出现的地方就是对全局变量的操作。Q1:什么情况下临界段会被打断?系统调度和外部中断。在FreeRTOS中,系统调度最终也是产生PendSV中断,在PendSVHandler中实现任务的切换,所以还是归结为中断。FreeRTOS对临界段的保护就是对中断的开和关的控制。原创 2023-04-17 15:09:20 · 669 阅读 · 0 评论 -
FreeRTOS中的任务与任务切换(笔记)
FreeRTOS中的任务调用与任务切换原创 2023-04-11 00:39:05 · 1661 阅读 · 1 评论 -
FreeRTOS中的列表与列表项(笔记)
FreeRTOS中与链表相关的操作均在list.h和list.c这两个文件中实现。其中,xLIST_ITEM 是在portmacro.h 中重新定义的数据类型。在FreeRTOS中,列表类似于c语言中的链表,列表项对应c语言中的节点。与c语言中双链表的节点插入类似。原创 2023-04-10 16:47:56 · 426 阅读 · 0 评论