taskRestart并没有让任务再次跑起来
我自己写个小程序测试taskRestart时,程序是可以运行的,但是在自己专门写的程序中跑时,却没有启动。
可以运行taskRestart,再次启动任务的程序如下:
void TestTask1() { printf("enter the TestTask1n"); while(1) { taskDelay(100); } }
taskId = taskSpawn("testTask" , 200 , 0 , TASK_STACK_SIZE, (FUNCPTR)TestTask1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); taskDelay(100); while(1) { taskRestart(taskId); taskDelay(5); }
在这个程序中,任务TestTask1是不断被启动的。
但是在 下面这种情况下TestTask1只在第一次运行,后面虽然用taskRestart,但没有能够成功启动任务的。
#include #include "taskLib.h" #include "sysLib.h" int taskId ; void TestTask1() { printf("enter the TestTask1n"); while(1) { taskDelay(100); } } void TaskManager() { taskRestart(taskId); } int main() { taskId = taskSpawn("testTask" , 200 , 0 , 500 , (FUNCPTR)TestTask1 , 0, 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0); sysAuxClkConnect((FUNCPTR)TaskManager, 0); sysAuxClkEnable(); taskDelay(1000); return 1; }
原因在于中断服务程序是没有上下文的,所以不能用taskRestart,可以再此处创建一个监听任务ListenTask,在ListenTask中激活该任务。 ListenTask平时都是阻塞的,只有当中断服务程序通知他激活任务时才苏醒并运行。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
有没有人能够回答一下呢。。