FreeRTOS中同优先级任务执行的顺序用一句话总结如下:
最后一个创建的任务最先执行,然后执行第一个创建的任务A,第二个创建的任务B……,以此类推。
假设现在有三个任务:A,B,C需要创建。第一个任务A在创建的时候,会随之被添加进ReadyList(就绪链表),同时将pxcurrentTCB指向当前优先级最高的任务:由于此时只有任务A,pxcurrentTCB就指向任务A。
随后,同一优先级的任务B,任务C被创建,pxcurrentTCB依次改变指向的任务为任务B和任务C。
刚开始启动调度器时,最低优先级的空闲任务被创建,由于pxcurrentTCB只会指向最高优先级的任务,因此此时pxcurrentTCB还是指向任务C。(如下图所示)

调度器正式被启动时,会从pxcurrentTCB指向的任务开始执行,由于此时pxcurrentTCB指向任务C,因此会从任务C开始执行,然后执行同优先级的任务A,再执行同优先级的任务B。