⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 int8u ostaskcreateext.htm

📁 uCOS-II系统服务例程 很不错的内核代码解释
💻 HTM
📖 第 1 页 / 共 4 页
字号:
yes">                   
</span>/* Do something with 'pdata'<span style="mso-spacerun:
yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>*/</span></p>

<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>for (;;) {<span
style="mso-spacerun:
yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>/*
Task body, always an infinite loop.<span style="mso-spacerun:
yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>*/</span></p>

<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>.</span></p>

<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>.</span></p>

<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>/*
Must call one of the following services:<span style="mso-spacerun:
yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>*/</span></p>

<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>/* <span style="mso-spacerun:
yes">&nbsp;&nbsp;&nbsp;</span>OSMboxPend()<span style="mso-spacerun:
yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>*/</span></p>

<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>/*<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;
</span>OSQPend()<span style="mso-spacerun:
yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>*/</span></p>

<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>/*<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;
</span>OSSemPend()<span style="mso-spacerun:
yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>*/</span></p>

<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>/*<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;
</span>OSTimeDly()<span style="mso-spacerun:
yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style="mso-spacerun:
yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>*/</span></p>

<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>/*<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;
</span>OSTimeDlyHMSM()<span style="mso-spacerun:
yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>*/</span></p>

<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>/*<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;
</span>OSTaskSuspend()<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;
</span>(Suspend self)<span style="mso-spacerun:
yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>*/</span></p>

<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>/*<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;
</span>OSTaskDel()<span style="mso-spacerun:
yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>(Delete<span
style="mso-spacerun: yes">&nbsp; </span>self)<span style="mso-spacerun:
yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun:
yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>*/</span></p>

<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>.</span></p>

<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>.</span></p>

<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>

<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style='mso-tab-count:1'>&nbsp;&nbsp; </span>}</span></p>

</div>

<p class=NewSectionPara><span lang=EN-US><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>

<p class=Descript><b><span lang=EN-US style='font-family:"Courier New"'>ptos</span></b><span
lang=EN-US> is a pointer to the task's top of stack.<span style="mso-spacerun:
yes">&nbsp; </span>The stack is used to store local variables, function
parameters, return addresses and CPU registers during an interrupt.<span
style="mso-spacerun: yes">&nbsp; </span>The size of this stack is determined by
the task's requirements, and the anticipated interrupt nesting.<span
style="mso-spacerun: yes">&nbsp; </span>Determining the size of the stack
involves knowing how many bytes are required for storage of local variables for
the task itself, all nested functions, as well as requirements for interrupts
(accounting for nesting).<span style="mso-spacerun: yes">&nbsp; </span>If the
configuration constant </span><b><span lang=EN-US style='font-family:"Courier New"'>OS_STK_GROWTH</span></b><span
lang=EN-US> is set to 1, the stack is assumed to grow downward (i.e. from high
memory to low memory).<span style="mso-spacerun: yes">&nbsp; </span></span><b><span
lang=EN-US style='font-family:"Courier New"'>ptos</span></b><span lang=EN-US>
will thus need to point to the highest <i>valid</i> memory location on the
stack.<span style="mso-spacerun: yes">&nbsp; </span>If </span><b><span
lang=EN-US style='font-family:"Courier New"'>OS_STK_GROWTH</span></b><span
lang=EN-US> is set to 0, the stack is assumed to grow in the opposite direction
(i.e. from low memory to high memory).</span></p>

<p class=NewSectionPara><span lang=EN-US><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>

<p class=Descript><b><span lang=EN-US style='font-family:"Courier New"'>prio</span></b><span
lang=EN-US> is the task priority.<span style="mso-spacerun: yes">&nbsp;
</span>A unique priority number must be assigned to each task and the lower the
number, the higher the priority (i.e. the importance) of the task.</span></p>

<p class=NewSectionPara><span lang=EN-US><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>

<p class=Descript><b><span lang=EN-US style='font-family:"Courier New"'>id</span></b><span
lang=EN-US> is the task’s ID number.<span style="mso-spacerun: yes">&nbsp;
</span>At this time, the ID is not currently used in any other function and has
simply been added in </span><b><span lang=EN-US style='font-family:"Courier New"'>OSTaskCreateExt()</span></b><span
lang=EN-US> for future expansion.<span style="mso-spacerun: yes">&nbsp;
</span>You should set the </span><b><span lang=EN-US style='font-family:"Courier New"'>id</span></b><span
lang=EN-US> to the same value as the task’s priority.</span></p>

<p class=NewSectionPara><span lang=EN-US><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>

<p class=Descript><b><span lang=EN-US style='font-family:"Courier New"'>pbos</span></b><span
lang=EN-US> is a pointer to the task's bottom of stack.<span
style="mso-spacerun: yes">&nbsp; </span>If the configuration constant </span><b><span
lang=EN-US style='font-family:"Courier New"'>OS_STK_GROWTH</span></b><span
lang=EN-US> is set to 1, the stack is assumed to grow downward (i.e. from high
memory to low memory) and thus, </span><b><span lang=EN-US style='font-family:
"Courier New"'>pbos</span></b><span lang=EN-US> must point to the lowest <i>valid</i>
stack location.<span style="mso-spacerun: yes">&nbsp; </span>If </span><b><span
lang=EN-US style='font-family:"Courier New"'>OS_STK_GROWTH</span></b><span
lang=EN-US> is set to 0, the stack is assumed to grow in the opposite direction
(i.e. from low memory to high memory) and thus, </span><b><span lang=EN-US
style='font-family:"Courier New"'>pbos</span></b><span lang=EN-US> must point
to the highest <i>valid</i> stack location.<span style="mso-spacerun:
yes">&nbsp; </span></span><b><span lang=EN-US style='font-family:"Courier New"'>pbos</span></b><span
lang=EN-US> is used by the stack checking function </span><b><span lang=EN-US
style='font-family:"Courier New"'>OSTaskStkChk()</span></b><span lang=EN-US>.</span></p>

<p class=NewSectionPara><span lang=EN-US><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>

<p class=Descript><b><span lang=EN-US style='font-family:"Courier New"'>stk_size</span></b><span
lang=EN-US> is used to specify the size of the task’s stack (in number of
elements).<span style="mso-spacerun: yes">&nbsp; </span>If </span><b><span
lang=EN-US style='font-family:"Courier New"'>OS_STK</span></b><span lang=EN-US>
is set to </span><b><span lang=EN-US style='font-family:"Courier New"'>INT8U</span></b><span
lang=EN-US>, then </span><b><span lang=EN-US style='font-family:"Courier New"'>stk_size</span></b><span
lang=EN-US> corresponds to the number of bytes available on the stack.<span
style="mso-spacerun: yes">&nbsp; </span>If </span><b><span lang=EN-US
style='font-family:"Courier New"'>OS_STK</span></b><span lang=EN-US> is set to </span><b><span
lang=EN-US style='font-family:"Courier New"'>INT16U</span></b><span lang=EN-US>,
then </span><b><span lang=EN-US style='font-family:"Courier New"'>stk_size</span></b><span
lang=EN-US> contains the number of 16-bit entries available on the stack.<span
style="mso-spacerun: yes">&nbsp; </span>Finally, if </span><b><span lang=EN-US
style='font-family:"Courier New"'>OS_STK</span></b><span lang=EN-US> is set to </span><b><span
lang=EN-US style='font-family:"Courier New"'>INT32U</span></b><span lang=EN-US>,
then </span><b><span lang=EN-US style='font-family:"Courier New"'>stk_size</span></b><span
lang=EN-US> contains the number of 32-bit entries available on the stack.</span></p>

<p class=NewSectionPara><span lang=EN-US><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>

<p class=Descript><b><span lang=EN-US style='font-family:"Courier New"'>pext</span></b><span
lang=EN-US> is a pointer to a user supplied memory location (typically a data
structure) which is used as a TCB extension.<span style="mso-spacerun:
yes">&nbsp; </span>For example, this user memory can hold the contents of
floating-point registers during a context switch, the time each task takes to
execute, the number of times the task is switched-in, etc. </span></p>

<p class=NewSectionPara><span lang=EN-US><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>

<p class=Descript><b><span lang=EN-US style='font-family:"Courier New"'>opt</span></b><span
lang=EN-US> contains task specific options.<span style="mso-spacerun:
yes">&nbsp; </span>The lower 8 bits are reserved by &micro;C/OS-II but you can use
the upper 8 bits for application specific options.<span style="mso-spacerun:
yes">&nbsp; </span>Each option consist of a bit.<span style="mso-spacerun:
yes">&nbsp; </span>The option is selected when the bit is set.<span
style="mso-spacerun: yes">&nbsp; </span>The current version of &micro;C/OS-II
supports the following options:</span></p>

<p class=Descript><span lang=EN-US><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>

<p class=Descript style='margin-left:36.0pt'><b><span lang=EN-US
style='font-family:"Courier New"'>OS_TASK_OPT_STK_CHK</span></b><span
lang=EN-US><span style="mso-spacerun: yes">&nbsp; </span>specifies whether
stack checking is allowed for the task.</span></p>

<p class=Descript style='margin-left:36.0pt'><b><span lang=EN-US
style='font-family:"Courier New"'>OS_TASK_OPT_STK_CLR</span></b><span
lang=EN-US> specifies whether the stack needs to be cleared.</span></p>

<p class=Descript style='margin-left:36.0pt'><b><span lang=EN-US
style='font-family:"Courier New"'>OS_TASK_OPT_SAVE_FP</span></b><span
lang=EN-US> specifies whether floating-point registers will be saved the stack
needs to be cleared.</span></p>

<p class=Descript style='margin-left:36.0pt'><span lang=EN-US><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>

<p class=Descript style='margin-left:36.0pt'><span lang=EN-US>you should refer
to uCOS_II.H for other options, i.e. </span><b><span lang=EN-US
style='font-family:"Courier New"'>OS_TASK_OPT_???</span></b><span lang=EN-US>. </span></p>

<p class=NewSectionPara><span lang=EN-US><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>

<p class=NewSectionPara><b><span lang=EN-US>Returned Value<o:p></o:p></span></b></p>

<p class=NewSectionPara><span lang=EN-US><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>

<p class=Descript><b><span lang=EN-US style='font-family:"Courier New"'>OSTaskCreateExt()</span></b><span
lang=EN-US> returns one of the following error codes:</span></p>

<p class=NewSectionPara><span lang=EN-US><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>

<p class=Descript><span lang=EN-US><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>1)
</span><b><span lang=EN-US style='font-family:"Courier New"'>OS_NO_ERR</span></b><span
lang=EN-US>, if the function was successful</span></p>

<p class=Descript><span lang=EN-US><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>2)
</span><b><span lang=EN-US style='font-family:"Courier New"'>OS_PRIO_EXIST</span></b><span
lang=EN-US>, if the requested priority already exist</span></p>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -