FreeRTOS的任务一共有运行、就绪、阻塞、挂起和删除五种状态。
下面分别介绍一下各个状态下的功耗情况:
运行状态(Running)
任务在运行状态下会占用CPU资源,导致较高的功耗,是功耗最高的状态;
尽量将任务逻辑拆分为小块,减少任务的运行时间,避免长时间占用CPU。
就绪状态(Ready)
任务处于就绪状态时,虽然没有运行,但调度器会定期检查就绪任务,导致一定的功耗,其功耗低于运行状态,但高于阻塞或挂起状态。
尽量减少高优先级任务的就是时间,用阻塞或挂起状态来带代替就绪状态。
阻塞状态(Blocked)
任务在阻塞状态下不会占用CPU资源,功耗较低。任务会等待事件(如信号量、队列、延时等),在事件发生前不会消耗CPU。如果所有任务都处于阻塞状态,系统会进入空闲任务(Idle Task),此时可通过vApplicationIdleHook()
钩子函数进入低功耗模式,进一步降低功耗。
尽量使用vTaskDelay()函数或者等待信号量、队列等机制,使任务进入阻塞状态,减少任务运行时间。
挂起状态(Suspended)
任务在挂起状态下不会参与调度,完全停止运行,是功耗最低的状态之一。
对于长时间不需要运行的任务使用