FreeRTOS系统时钟节拍

在systick中断中调用

是否新的tick值会解除阻塞

xTaskIncrementTick()

{
	调度器没有挂起
	{
		xTickCount加1;
		xTickCount=0//溢出
			交换delay_list
		xTickCount>下一个任务阻塞时间//即超时
		{
			延迟列表是否空??
			延迟列表的头部,从阻塞状态删除
			xConstTickCount < xItemValue //xItemValue保存了唤醒时间
				时间未到(按顺序排序)
			任务从列表删除
			任务是否在等待事件,从事件列表删除此任务
			添加到就绪列表
			任务的优先级高于当前的
				任务切换
			当前优先级的就绪列表是否》1
			tick钩子函数
		}
	}
	调度器挂起
	{
		++uxPendedTicks;//在vTaskResumeAll()中恢复调度器会调用uxPendedTicks次xTaskIncrementTick来恢复xTickCount
	}
}	

你可能感兴趣的:(RTOS,RTOS,单片机,嵌入式硬件)