关键词不能为空

当前您在: 主页 > 英语 >

嵌入式常用函数手册

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-06 10:52
tags:

-

2021年2月6日发(作者:俊才)



任务管理


1 OSTaskCreate()



建立一个 新任务。


任务的建立可以在多任务环境启动之前,


也可以在


正在运行的任务中建立。


中断处理程序中不能建立任务。

< p>
一个任务可








< p>








INT8U OSTaskCreate(void (*task)(void *pd), void *pdata, OS_STK *pto


s, INT8U prio);

< p>






task



< p>










针。


pdata


指向一个数据结构,该结构用来在建立任务时向任务传




数。


ptos is a pointer to the task's top of stack. If the configuration con


stant OS_STK_GROWTH is set to 1, the stack is assumed to grow down


ward (i.e. from high memory to low memory). 'pstk' will thus point to the


highest (valid) memory location of the stack. If OS_STK_GROWTH is s


et to 0, 'pstk' will point to the lowest memory location of the stack and the


stack will grow with increasing memory locations. prio is the task's pr


iority. A unique priority MUST be assigned to each task and the lower the


number, the higher the priority.


返回值:


OSTaskCreate()


的返回值为下


述之一:


* OS_NO_ERR


:函数调用成功。


* OS_PRIO_E XIST


:具有


该优先级的任务已经存在。

* OS_PRIO_INV


ALID


:参数指定的优先< /p>


级大于


OS_LOWEST_PRIO



* OS_NO_MORE_TCB


:系统中没有


OS_TCB


可以分配给任务了。




2 OSTaskSuspend()


无条件挂起一个任务。


调用此函数的任务也可


以传递参数


OS_PRIO_SELF


,挂起调用任务本身 。当前任务挂起后,



1



只有其他任务才能唤醒被挂起的任务。


任务挂起后,

系统会重新进行


任务调度,


运行下一个优先级最高的就绪任 务。


唤醒挂起任务需要调


用函数


OST askResume()



< br>任务的挂起是可以叠加到其他操作上


的。例如,任务被挂起时正在进行延时操作, 那么任务的唤醒就需要


两个条件:延时的结束以及其他任务的唤醒操作。又如,任务被挂 起


时正在等待信号量,


当任务从信号量的等待对列中清除后也不 能立即









到< /p>









< p>



INT8U OSTaskSuspend(INT8U prio);


参数说明:

< br>prio


为指定要获取挂


起的任务优先级,也可以指定参 数


OS_PRIO_SELF


,挂起任务本身。





< br>一





















OSTaskS uspend()


的返回值为下述之一:


* OS_NO_E RR


:函数调用成


功。


* OS_TA SK_SUSPEND_IDLE



试图挂起

< br>μC/OS


-II


中的空闲任务



Idle task



。此为非法操作。


* OS _PRIO_INV


ALID


:参数指定的优

< br>先级大于


OS_LOWEST_PRIO


或没有设定


OS_PRIO_SELF


的值。


* OS_TASK_SUSPEND_PRIO


:要挂起的任务不存在。




3 OSTaskResume()


唤醒一个用


OSTaskSuspend()


函数挂起的任


务。


OSTaskResume()


也是唯一能



解挂


挂起任务的函数。函数原型:


INT8U OSTaskResume(INT8U prio);


参数说明:

prio


指定要唤醒任务的



先< /p>








OSTaskResume()





< p>







* OS_NO_ERR


:函数调用成功。


* OS_TASK_R ESUME_PRIO


:要唤


醒的任务不存在。


* OS_TASK_NOT_SUSPENDED


:要唤醒的任务不


在挂起状态。


* OS_PRIO_INV


AL ID


:参数指定的优先级大于或等于



2



OS_LOWEST_PRIO


。信号量


1 OSSemCreate()


该函数建立并初


始化一个信号量,信号量的作用如下:


*


允许一个任务和其他任务


或者中断同步


*


取得设备的使用权


*


标志事件的发生函数原型:


OS_EVENT *OSSemCreate(INT16U value);


参数说明:


value


参数是所


建立的信号量的初始值,可以取


0

< br>到


65535


之间的任何值。返回值:

< br>OSSemCreate()


函数返回指向分配给所建立的信号量的控制块的指


针。如果没有可用的控制块,


OSSemCreate()


函数返回空指针。




2 OSSemPend()


该函数用于任务 试图取得设备的使用权、任务需


要和其他任务或中断同步、


任务 需要等待特定事件的发生的场合。








OS SemPend()












< br>零



OSSemPend()


函数递减该值并返回该值。如果调用时信号量值等于




OSSemPend()







< br>入












OSSemPend()


函数挂起当前任务直到其他的任务或中断设置信号量


或超出等待的预期 时间。如果在预期的时钟节拍内信号量被设置,


μC/OS


-< /p>


Ⅱ默认让最高优先级的任务取得信号量并回到就绪状态。


一个



OSTaskSuspend()


函数 挂起的任务也可以接受信号量,但这个任务


将一直保持挂起状态直到通过调用

< p>
OSTaskResume()


函数恢复该任务






函< /p>






void OSSemPend ( OS_EVNNT *pevent, INT16U timeout, int8u *err );


参数说明:


pevent


是指向 信号量的指针。


该指针的值在建立该信号量


时可以得到。


(参考


OSSemCreate()


函数)



timeout


允许一个任


务在经过了指定数目的时钟节拍后 还没有得到需要的信号量时恢复



3



就绪状态。


如果该值为零表示任务将持续地等待信号量,


最大的等待


时间为


65535


个时钟节拍。


这个时间长度并不是非常严格的,


可能存


在一个时钟节拍的误差。


err


是指向包含错误码的变量的指针,


返回的错误码可能为下述几种:


* OS_NO_ERR


:信号量不为


零。


* OS_TIMEOUT


:信号量没有在指定数目的时钟周期内

被设置。


* OS_ERR_PEND_ISR


:从中断调用该函数。虽然规


定了不允许从中断调用该函数,但


μC/OS


-


Ⅱ仍然包含了检测这种情


况的功能。


* OS_ERR_EVENT_TYPE



pevent


不是指向信号


量的指针。返回值:无


3 OSSemPost()


该函数用于设置指定的信

号量。如果指定的信号量是零或大于零,


OSSemPost()


函数递增该信


号量的值并返回。


如果有任何任务在等待 该信号量,


则最高优先级的


任务将得到信号量并进入就绪状态。 任务调度函数将进行任务调度,


决定当前运行的任务是否仍然为最高优先级的就绪任务。 函数原型:


INT8U OSSemPost



OS_EVENT *pevent



;


参数说明:


p event


是指向


信号量的指针。该指针的值在建立该信号量 时可以得到。


(参考


OSSemCreate()

< p>
函数)


。返回值:


OSSemPost()


函数的返回值为下述之


一:


* OS_NO_ERR


:信号量被成功地设置


* OS_SEM_OVF


:信号量


的值溢出


* OS_ERR_EVENT_TYPE



pevent


不是指向信号量的指针


时间


1 OSTimeDly()


该函数用于将一个任务延时若干个时钟节


拍。如果延时时间大于


0


,系统将立即进行 任务调度。延时时间的长


度可从


0


到< /p>


65535


个时钟节拍。


延时时间


0


表示不进行延时,


函数将

< br>立即返回调用者。


延时的具体时间依赖于系统每秒钟有多少个时钟节



4



拍(由文件


OS_CFG


.H


中的


OS_TICKS_PER_SEC


宏来设定)


。函数


原型:


void OSTimeDly (INT16U ticks);


参数说明:


ticks


为要延时的时


钟节拍数。返回值:无


2 OSTimeDlyHMSM()


该函数用于将一个

< br>任

























< br>调



OSTimeDlyHMSM()


后,如果延时时间不为


0


,系统将立即进行任





< p>





: INT8U OSTimeDlyHMSM (INT8U hours



INT8U minutes



INT8U seconds



INT16U milli);


参数说明:


hours



延时小时数,范围从


0-255



minutes


为延时分钟数,范围从< /p>


0-59



seconds


为延时秒数,


范围从


0-59 milli


为延时毫秒数,


范围从


0 -999




需要说明 的是,操作系统在处理延时操作时都是


以时钟节拍为单位的,


实 际的延时时间是时钟节拍的整数倍。


如果系


统时钟节拍的间隔是


10ms


,而设定延时为


5ms


的话,则不会产生延


时操作;而如果设定延时为


15ms


,则实际的延时是两个时钟节拍,


也就是

< p>
20ms


。返回值:


OSTimeDlyHMSM ()


的返回值为下述之一:


* OS_NO_ERR


:函数调用成功。


* OS_TIME_I NV


ALID_MINUTES



参数 错误,分钟数大于


59



* OS_T IME_INV


ALID_SECONDS


:参数


错误,秒数大于


59



* OS_TIME_INV


ALID_MILLI


:参数错误,毫 秒


数大于


999


* OS_TIME_ZERO_DLY


:四个参数全为


0


。内存管理


1 OSMemCreate()


该函数建立并初始化一个用于动态内存分配的


区域,该内存区域 包含指定数目的、大小确定的内存块。应用可以动


态申请这些内存块并在用完后将其释放 回这个内存区域。


该函数的返


回值就是指向这个内存区域控制块 的指针,并作为


OSMemGet()




5



OSMemPut()



OSMemQuery()










< br>函






OS_MEM *OSMemCreate( void *addr, INT32U nblks, INT32U blksize,


INT8U *err );


参数说明:


addr


建立的内存区域的起始地址。可以使用


静态数组或在系统初始化时使用

< br> malloc()


函数来分配这个区域的空


间。


nblks


内存块的数目。每一个内存区域最少需要定义两个内


存块。


blksize


每个内存块的大 小,最小应该能够容纳一个指针


变量。


err


是指向包含错误码的变量的指针。


Err


可能是如下几种





* OS_NO_ERR






< br>内




域。

* OS_MEM_INV


ALID_ADDR


:非法地址,即地址为空指




* OS_MEM_INV


ALID_PART











域。


* OS_MEM_INV


ALID_BLKS


:没有为内存区域 建立至少


两个内存块。


* OS_MEM_INV


ALID_SIZE



内存块大小不足以


容纳一个指针变量。


返回值:


OSMemCreate()


函数返回指向所创建的













果< /p>









< p>






2 OSMemGet()


该函数 用于从内存区域分配一个内存块。用户程


序必须知道所建立的内存块的大小,并必须在使 用完内存块后释放


它。


可以多次调用


OSMemGet()


函数。


它的返回值就是指向所分配内< /p>









< p>


OSMemPut()


< br>数











void *OSMemGet(OS_MEM *pmem, INT8U *err);


参数说明:


pmem



指向内存区域控制块的指针,可以从


OSMemCreate()


函数的返回值


中得到。


err


是指向包含错误码的变量的指针。


Err


可能是如下情




* OS_NO_ERR












6

-


-


-


-


-


-


-


-



本文更新与2021-02-06 10:52,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/607591.html

嵌入式常用函数手册的相关文章

  • 爱心与尊严的高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊严高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊重的作文题库

    1.作文关爱与尊重议论文 如果说没有爱就没有教育的话,那么离开了尊重同样也谈不上教育。 因为每一位孩子都渴望得到他人的尊重,尤其是教师的尊重。可是在现实生活中,不时会有

    小学作文
  • 爱心责任100字作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任心的作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文