uC/OS-II 任务的基本操作

uC/OS-II 任务管理

1. 创建任务

相关函数

	OSTaskCreate(
	start_task,		//	任务指针
	(void *)0,		//参数列表
	(OS_STK *)&START_TASK_STK[START_STK_SIZE-1],//任务堆栈
	START_TASK_PRIO); //任务优先级

2.任务的删除

任务被删除以后,该任务的信息从任务控制块列表中被移除,只是以代码的形式存放在单片机中。
相关函数:

2.1请求删除任务

OSTaskDelReq(BEEP_TASK_PRIO); //删除优先级为BEEP_TASK_PRIO的任务

2.2删除任务

OSTaskDel(OS_PRIO_SELF);//删除任务本身

注:一般删除任务的操作放在该任务所在函数完成,防止该任务所占用的资源没有释放。

3.任务的挂起与释放

任务挂起以后,该任务被加入等待列表,只有被恢复以后,才有可能获得CPU的使用权。

3.1挂起任务

OSTaskSuspend(LED1_TASK_PRIO);

3.2恢复任务

使对应优先级的任务从等待列表中进入就绪列表,下一次任务调度后,若条件满足则可以获得CPU的使用权。

OSTaskResume(LED1_TASK_PRIO); 

4 中断服务程序设计

只要中断条件允许,中断被触发以后,进入中断服务子函数,中断服务子函数可以看成是一个优先级高于 优先级0的一个任务。

中断程序结构:

OSIntEnter();//进入中断服务,记录中断嵌套的层数
中断程序代码...

OSIntExit();//推出中断服务,并触发任务调度,让当前优先级最高的任务获得CPU使用权
发布了8 篇原创文章 · 获赞 3 · 访问量 857

猜你喜欢

转载自blog.csdn.net/qq_42982824/article/details/104250197