PT_INIT(pt) 初始化任务变量,只在初始化函数中执行一次就行 PT_BEGIN(pt) 启动任务处理,放在函数开始处 PT_END(pt) 结束任务,放在函数的最后 PT_WAIT_UNTIL(pt, condition) 等待某个条件(条件可以为时钟或其它变量,IO等)成立,否则直接退出本函数,下一次进入本 函数就直接跳到这个地方判断 PT_WAIT_WHILE(pt, cond) 和上面一个一样,只是条件取反了 PT_WAIT_THREAD(pt, thread) 等待一个子任务执行完成 PT_SPAWN(pt, child, thread) 新建一个子任务,并等待其执行完退出 PT_RESTART(pt) 重新启动某个任务执行 PT_EXIT(pt) 任务后面的部分不执行,直接退出重新执行 PT_YIELD(pt) 锁死任务 PT_YIELD_UNTIL(pt, cond) 锁死任务并在等待条件成立,恢复执行
在pt中一共定义四种线程状态,在任务函数退出到上一级函数时返回其状态 PT_WAITING 等待 PT_EXITED 退出 PT_ENDED 结束 PT_YIELDED 锁死
UploadFiles/2008-4/251630485877.rar
附件是我用这种方法写的一个小程序,验证是否正确,感觉还不错,迟些有机会试一下用PT写个项目程序。
不过PT只是实现小部分RTOS功能,但我觉得对于8位或16位的单片机处理大循环类的程序已经足够。本人理解能力能限,也不知道自己理解的对不对,欢迎指教!!还有PT_THREAD(name_args)这个宏不太看得懂怎样用,请会的朋友指点一下。