FreeRTOS 入门手册_中文版
1 任务函数
由C语言组成 必须返回void 带一个void* 指针参数
void ATaskFunction(void*pvParameter)
{
int iVariableExample=0;
for(;;)
{
死循环
}
}
2 任务状态
总的状态 分两个状态 运行态 休眠态
3创建任务
xTaskCreate(); 创建任务
4任务优先级
xTaskCreate()函数参数列表的倒数第二个参数表示任务的优先级,
如果是任务启动后,可以调用vTaskPrioritySet() 函数进行修改
5 扩充非运行态
如果创建的任务只顾不停地处理自己的事情而没有其它任何事情需要等待,由于它不需要任何等待就能够进入运行态,这种“不停处理”类型的任务就限制了其有用性,因为这种任务只能创建在最低的优先级上。如果他们运行在其它优先级上,比这个任务优先级低的任务永远没有运行的机会。
为了使我们的任务切实有用,我们需要通过某种方式来进行事件驱动。一个事件驱动任务只会在事件发生后触发工作(处理),而在事件没有发生时是不能进入运行态的。一个优先级高的但是不能运行的任务不会被调度器选中,而代之以一个优先级虽然更低但能够运行的任务。因此,采用事件驱动的意义就在于任务可以被创建在许多不同的优先级上,并且最高优先级任务把所有的低优先级任务饿死。
6 阻塞状态
如果一个任务正在等待某个事件,则称这个任务处于“阻塞态”。阻塞态是非运行态的一个子状态。
任务可以进入阻塞态以等待以下两种不同类型的事件:
1 定时事件
2 同步事件