没有合适的资源?快使用搜索试试~ 我知道了~
OSTaskCreate 源代码
需积分: 10 2 下载量 199 浏览量
2013-04-06
20:49:00
上传
评论 1
收藏 6KB TXT 举报
温馨提示
试读
5页
OSTaskCreate源代码和注释 很详细的
资源推荐
资源详情
资源评论
1. OSTaskCreate()
OSTaskCreate()建立一个新任务,可以在多任务环境启动之前,或者运行任务中建立任务。注意,ISR中禁止建立任务,一个任务必须为无限循环结构。
源代码如下:
#if OS_TASK_CREATE_EN > 0 /* 条件编译,是否允许任务的创建 */
INT8U OSTaskCreate (void (*task)(void *pd), /* 函数指针,void *pd为函数的参数 */
void *pdata, /* 建立任务时,传递的参数 */
OS_STK *ptos, /* 指向堆栈任务栈顶的指针 */
INT8U prio) /* 任务优先级 */
{
#if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
OS_CPU_SR cpu_sr;
#endif
OS_STK *psp;
INT8U err;
#if OS_ARG_CHK_EN > 0
if (prio > OS_LOWEST_PRIO) { /* 参数检查,优先级是否处于允许优先级之内 */
return (OS_PRIO_INVALID);
}
#endif
OS_ENTER_CRITICAL(); /* 关中断 */
if (OSTCBPrioTbl[prio] == (OS_TCB *)0) { /* 判断任务的优先级是否存在,如不存在,设置任 */
OSTCBPrioTbl[prio] = (OS_TCB *)1; /* 务优先级为1设置优先级后,就可以开中断了, */
/* 不用担心冲突,因为该优先级已经被占了 */
OS_EXIT_CRITICAL();
psp = (OS_STK *)OSTaskStkInit(task, pdata, ptos, 0);
/* 初始化堆栈,此函数与具体的硬件有关,OS_CPU_C.C */
err = OS_TCBInit(prio, psp, (OS_STK *)0, 0, 0, (void *)0, 0); /* 详见此函数的说明 */
if (err == OS_NO_ERR) {
OSTaskCreate()建立一个新任务,可以在多任务环境启动之前,或者运行任务中建立任务。注意,ISR中禁止建立任务,一个任务必须为无限循环结构。
源代码如下:
#if OS_TASK_CREATE_EN > 0 /* 条件编译,是否允许任务的创建 */
INT8U OSTaskCreate (void (*task)(void *pd), /* 函数指针,void *pd为函数的参数 */
void *pdata, /* 建立任务时,传递的参数 */
OS_STK *ptos, /* 指向堆栈任务栈顶的指针 */
INT8U prio) /* 任务优先级 */
{
#if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
OS_CPU_SR cpu_sr;
#endif
OS_STK *psp;
INT8U err;
#if OS_ARG_CHK_EN > 0
if (prio > OS_LOWEST_PRIO) { /* 参数检查,优先级是否处于允许优先级之内 */
return (OS_PRIO_INVALID);
}
#endif
OS_ENTER_CRITICAL(); /* 关中断 */
if (OSTCBPrioTbl[prio] == (OS_TCB *)0) { /* 判断任务的优先级是否存在,如不存在,设置任 */
OSTCBPrioTbl[prio] = (OS_TCB *)1; /* 务优先级为1设置优先级后,就可以开中断了, */
/* 不用担心冲突,因为该优先级已经被占了 */
OS_EXIT_CRITICAL();
psp = (OS_STK *)OSTaskStkInit(task, pdata, ptos, 0);
/* 初始化堆栈,此函数与具体的硬件有关,OS_CPU_C.C */
err = OS_TCBInit(prio, psp, (OS_STK *)0, 0, 0, (void *)0, 0); /* 详见此函数的说明 */
if (err == OS_NO_ERR) {
资源评论
u010187967
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功