文件名称:空闲任务与空闲任务钩子函数-ri5cy_user_manual
文件大小:3.05MB
文件格式:PDF
更新时间:2024-06-23 11:42:22
FreeRTOS 中文
1.7 空闲任务与空闲任务钩子函数 例 4 中创建的任务大部份时间都处于阻塞态。这种状态下所有的任务都不可运行, 所以也不能被调度器选中。 但处理器总是需要代码来执行——所以至少要有一个任务处于运行态。为了保证这 一点,当调用 vTaskStartScheduler()时,调度器会自动创建一个空闲任务。空闲任务是 一个非常短小的循环——和 早的示例任务十分相似,总是可以运行。 空闲任务拥有 低优先级(优先级 0)以保证其不会妨碍具有更高优先级的应用任务 进入运行态——当然,没有任何限制说是不能把应用任务创建在与空闲任务相同的优先 级上;如果需要的话,你一样可以和空闲任务一起共享优先级。 运行在 低优先级可以保证一旦有更高优先级的任务进入就绪态,空闲任务就会立 即切出运行态。这一点可以在图 9 的 tn 时刻看出来,当任务 2 退出阻塞态时,空闲任 务立即切换出来以让任务 2执行。任务 2被看作是抢占(pre-empted)了空闲任务。抢占 是自动发生的,也并不需要通知被抢占任务。 空闲任务钩子函数 通过空闲任务钩子函数(或称回调,hook, or call-back),可以直接在空闲任务中添 加应用程序相关的功能。空闲任务钩子函数会被空闲任务每循环一次就自动调用一次。 通常空闲任务钩子函数被用于: 执行低优先级,后台或需要不停处理的功能代码。 测试处系统处理裕量(空闲任务只会在所有其它任务都不运行时才有机会执行,所 以测量出空闲任务占用的处理时间就可以清楚的知道系统有多少富余的处理时 间)。 将处理器配置到低功耗模式——提供一种自动省电方法,使得在没有任何应用功能 需要处理的时候,系统自动进入省电模式。