初学uc/os的一点方法。
首先把任务代码、任务堆栈、任务控制块、就绪表(OSRdyGrp、OSRdyTbl[])、如何让任务就绪和脱离就绪、如何查高优先级、任务调度等概念搞清楚。
然后结合这几个函数:OSTaskCreat()、OSInit()、OSStart()、OSTimeTick()、OSTimeDly()、OSIntEnter()、OSIntExit()。读懂,读的过程中结合上述概念。由此就可完成一个最简的多任务运行。
其中,OSTaskCreat()作用是创建一个任务,并进行该任务的堆栈初始化、任务控制块初始化。
OSInit()初始化操作系统的全局变量,把就绪表初始化成0,任务控制块(当前任务控制块、高优先级任务控制块等等)初始化成0。
OSStart()启动从就绪表中查优先级最高的任务,第一次去运行。
OSTimeDly(),该函数尤为重要,调用它可实现将正在运行的任务脱离就绪,并进行一次任务调度(运高优先级任务)。
OSTimetick(),遍历所有的基于优先级的任务,将延时时间节拍减一次。如为0说延时时间到,将任务在就绪表中就绪。