UCOSIII任务创建与删除

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!
1.1、任务的创建


UCOSIII 中要想使用任务,第一件事就是创建一个任务,创建任务使用函数 OSTaskCreate()

void OSTaskCreate (OS_TCB *p_tcb,

CPU_CHAR *p_name,

OS_TASK_PTR p_task,

void *p_arg,

OS_PRIO prio,

CPU_STK *p_stk_base,

CPU_STK_SIZE stk_limit,

CPU_STK_SIZE stk_size,

OS_MSG_QTY q_size,

OS_TICK time_quanta,

void *p_ext,

OS_OPT opt,

OS_ERR *p_err)

任务控制块

OSTaskCreate((OS_TCB * )&StartTaskTCB,

任务名字

(CPU_CHAR * )“start task”,

任务函数:(OS_TASK_PTR )start_task,

//开始任务任务函数

void start_task(void *p_arg)

{

OS_ERR err;

CPU_SR_ALLOC();

p_arg = p_arg;

CPU_Init();

#if OS_CFG_STAT_TASK_EN > 0u

OSStatTaskCPUUsageInit(&err); //统计任务

#endif

#ifdef CPU_CFG_INT_DIS_MEAS_EN //如果使能了测量中断关闭时间

CPU_IntDisMeasMaxCurReset();

#endif

#if OS_CFG_SCHED_ROUND_ROBIN_EN //当使用时间片轮转的时候

//使能时间片轮转调度功能,时间片长度为1个系统时钟节拍,既1*5=5ms

OSSchedRoundRobinCfg(DEF_ENABLED,1,&err);

#endif

OS_CRITICAL_ENTER(); //进入临界区

//创建TASK1任务

OSTaskCreate((OS_TCB * )&Task1_TaskTCB,

(CPU_CHAR * )“Task1 task”,

(OS_TASK_PTR )task1_task,

(void * )0,

(OS_PRIO )TASK1_TASK_PRIO,

(CPU_STK * )&TASK1_TASK_STK[0],

(CPU_STK_SIZE)TASK1_STK_SIZE/10,

(CPU_STK_SIZE)TASK1_STK_SIZE,

(OS_MSG_QTY )0,

(OS_TICK )0,

(void * )0,

(OS_OPT )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,

(OS_ERR * )&err);

//创建TASK2任务

OSTaskCreate((OS_TCB * )&Task2_TaskTCB,

(CPU_CHAR * )“task2 task”,

(OS_TASK_PTR )task2_task,

(void * )0,

(OS_PRIO )TASK2_TASK_PRIO,

(CPU_STK * )&TASK2_TASK_STK[0],

(CPU_STK_SIZE)TASK2_STK_SIZE/10,

(CPU_STK_SIZE)TASK2_STK_SIZE,

(OS_MSG_QTY )0,

(OS_TICK )0,

(void * )0,

(OS_OPT )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,

(OS_ERR * )&err);

OS_CRITICAL_EXIT(); //退出临界区

OSTaskDel((OS_TCB*)0,&err); //删除start_task任务自身

}

传递给任务函数的参数:void *p_arg,

(void * )0,

任务优先级:OS_PRIO prio,

(OS_PRIO )START_TASK_PRIO,

任务堆栈的基地址:CPU_STK *p_stk_base,

(CPU_STK * )&START_TASK_STK[0],

任务堆栈深度限位:CPU_STK_SIZE stk_limit,

(CPU_STK_SIZE)START_STK_SIZE/10,

任务堆栈大小:CPU_STK_SIZE stk_size,

(CPU_STK_SIZE)START_STK_SIZE,

任务内部消息队列能够接收的最大消息数目,为0时禁止接收消息:OS_MSG_QTY q_size,

(OS_MSG_QTY )0,

当使能时间片轮转时的时间片长度,为0时为默认长度:OS_TICK time_quanta,

(OS_TICK )0,

用户补充的存储区:void *p_ext,

(void * )0,

读者福利

由于篇幅过长,就不展示所有面试题了,感兴趣的小伙伴

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

更多笔记分享

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!
长,就不展示所有面试题了,感兴趣的小伙伴**

[外链图片转存中…(img-3yfU1I8S-1714681734008)]

[外链图片转存中…(img-agKEBb3a-1714681734008)]

[外链图片转存中…(img-RXDXjmUK-1714681734008)]

更多笔记分享

[外链图片转存中…(img-MdFbADdq-1714681734009)]
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值