- 博客(5)
- 收藏
- 关注
原创 FreeRTOS个人总结【任务调度】
如果这时候Task3执行完了(并不代表以后不执行了,可能是进入到阻塞态挂起态),还剩Task1和Task2两个同等优先级的任务,那么这两个任务轮流执行1Tick,Task1执行1Tick后插入到链表末尾······循环执行。好比是你在家里做饭是A任务,看小孩是B任务,CPU对任务的调度执行是根据任务的状态和优先级来管理的(优先级在上一篇的创建任务函数中设定)。上一篇说的是创建任务时的函数和参数的含义,想要更好的理解任务,我们需要知道任务有哪几种状态;高优先级的任务不停止,低优先级的任务永不执行;
2025-02-07 16:45:42
301
原创 FreeRTOS个人总结【创建任务】
因为进入任务函数时会把该函数的返回地址放在lr(函数返回地址)中,如果该任务没有调用其他函数,则lr的值不用保存在任务栈中,但是一旦该任务中调用了其他函数,那么这个lr寄存器一定会被调用的函数使用,lr的值会被覆盖,所以一旦有函数调用就会把lr的值放入任务栈中存起来。那么任务在切换时需要保存当前cpu寄存器的数据,根据上一节文章末尾提到的保存现场而知,这些数据是需要在内存中申请一片任务栈空间来存储的(虽然叫做栈,但是与栈区的概念不是很一样,该栈是申请出来的,不是局部变量存放的那个栈,所以不要混淆;
2024-09-30 21:31:19
409
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人