这个是为1 时使用抢占式调度器,为 0 时使用协程。如果使用抢占式调度器的话内核会在每个时 钟节拍中断中进行任务切换,当使用协程的话会在如下地方进行任务切换: ● 一个任务调用了函数 taskYIELD()。 ● 一个任务调用了可以使任务进入阻塞态的 API 函数。 ● 应用程序明确定义了在中断中执行上下文切换0 P+ {0 V- k7 f9 m0 T# g- i5 e 这里我们使用的是抢占优先级,在这里说明一点就是优先级越大,则对应的优先级的数字越大, 在这里需要知道一个函数就是vTaskDelay();这个是任务调度函数的一个设置的时间,意思就是说我可以通过设置这个函数的时间来设置这个任务阻塞的时间,也就是说你设置的这个时间就是下一次进入这个任务需要等待的时间。如果你自己写的时间delay函数就没有这个功能,只是单纯的延时。9 V3 @5 S! t5 u 介绍完这一点后,再来说说这个抢占优先级。抢占的意思,当一个优先级最高的任务执行完一次后,如果这个任务设置了阻塞时间的话,会出现一个抢占,,也就是说优先级第二高的任务开始执行,如果这个任务也设置了阻塞时间的话,那么当执行完这次任务后,也会出现一个抢占,如果第一个优先级的任务到了阻塞时间的话,那么他就会开始执行任务,如果没有到的话,就第三个优先级的任务执行,以后依次这样执行。如果第一个任务没有时间阻塞的话,他就会一直抢占CPU,所以剩下的其他任务都不会执行了,如果其他的任务中一个也没有阻塞的话,那么程序执行到这个任务的时候,其他的任务也不会运行了,CPU会一直被这个任务所占有。 所以从这里可以看出来,在每个任务中都需要加一个任务阻塞执行的时间是必须的,一定要加的,除非你想只执行一个任务。" L; h, K9 H/ U T2 d$ K 刚刚接触FreeROTS,不知道理解的对不对,如果我说错了,希望大佬们能够指出来!!!!!!2 S* |1 U$ a$ U; M/ ]7 u . T0 e# T8 ^: U/ D1 P# s |
https://pan.baidu.com/s/1dF1rMEl
密码pyf7/ P4 {, ]! a" u, Y' ]3 y; \1 G! s# j
多谢分享,配色的确不错。