嵌入式教材课件 第五次.docVIP

  • 1
  • 0
  • 约4.18千字
  • 约 5页
  • 2022-04-13 发布于未知
  • 举报
实验二 uC/OS-II任务间通讯和同步实验 一、实验目的 掌握uC/OS-II操作系统下使用信号量解决任务之间的同步问题。 二、实验内容 使用信号量实现任务间同步。 三、实验原理 uC/OS-II中使用信号量进行任务之间同步 通过调用OSSemCreate()建立信号量,并对信号量的初始计数值赋值。该初始值为0到65,535之间的一个数。如果信号量是用来表示一个或者多个事件的发生,那么该信号量的初始值应设为0。如果信号量是用于对共享资源的访问,那么该信号量的初始值应设为1(例如,把它当作二值信号量使用)。最后,如果该信号量是用来表示允许任务访问n个相同的资源,那么该初始值显然应该是n,并把该信号量作为一个可计数的信号量使用。 通过调用OSSemPost()函数发送一个信号量,通过调用OSSemPend()函数等待一个信号量。如果信号量当前是可用的(信号量的计数值大于0),将信号量的计数值减1,然后函数将“无错”错误代码返回给它的调用函数。如果信号量的计数值为0,而OSSemPend()函数又不是由中断服务子程序调用的,则调用OSSemPend()函数的任务要进入睡眠状态,等待另一个任务(或者中断服务子程序)发出该信号量。 下面的代码使用两个信号量实现了两个任务之间的同步。信号量创建的代码如下,信号量 Sem2初始为可用状态,而信号量Sem1初始为不可用状态。 Sem1=OSSe

文档评论(0)

1亿VIP精品文档

相关文档