


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
S.D.Lu的uC/OS II 入门学习笔记(3):信号量本篇实验将在上一篇的基础上进行,仍然是运行两个任务,每个任务控制一个LED的亮灭。但是这两个任务将访问一个公共资源,所以用到了信号量进行通信。问题的提出如果两个任务共享一个公共资源,而且只有当一个任务完成访问之后,另一个任务才能访问,那么当一个任务访问该资源未完成时就发生了任务切换,而切换后运行的任务也要访问该资源,这样就发生了访问冲突。一个简单的解决方法就是,给该资源设置一个标志位,用于标识它是否正在被占用。如果被占用,那么要访问该资源的任务需要等待它被释放后才能访问。这就是引入信号量的最初目的。在上一篇实验的基础上进行修改。通过该实验理解信号量的作用。假设Task_LED和Task_LED2访问同一资源,程序中Task_LED用点亮PA8口的LED表示正在占用该资源,熄灭表示Task_LED当前不占用该资源;同理,Task_LED2用PD2口的LED表示它是否正在占用该资源。程序修改如下:例3-1 将app.c中的内容改为如下:其实就是定义了1个标志位,并在每个任务中增加了4条语句。编译下载,LED2闪烁2次后LED1闪烁1次,如此循环,而且两路LED不会同时被点亮(刚开始上电的时候有可能同时被点亮,取决于初始化函数)。该程序模拟了,如何用一个标志位避免两个任务同时访问一个资源产生的冲突。每个任务中的LED_flag = 0;和LED_flag = 1;两条语句中的代码,表示该任务正在访问公共资源。需要注意的是,while(!LED_flag) OSTimeDly(1); 不能写成while(!LED_flag);。因为while(!LED_flag);会一直占用CPU。OSTimeDly()是C/OS II提供的延时函数,延时的单位是的一个Tick“心跳”周期。在此加入OSTimeDly(1);作用是让C/OS II有机会切换到其他任务。本例实验中定义的LED_flag事实上就是一个信号量。LED_flag = 1表示资源未被占用,LED_flag = 0表示资源正在被占用。但是,在C/OS II中使用事件控制块来描述一个信号量,这样使用起来会更加方便。例3-2 将app.c中的内容改为如下:编译下载,运行程序,结果和例3-1相同,两个例子的程序基本等价。需要注意的是,本例中用到了信号量及相关函数等,所以在os_cfg.h配置文件中必须将OS_SEM_EN置1,如下图:OSSemPend()函数的原型如下:当timeout取值为0时,表示一直等待,直到信号有效。OSSemPost()函数的原型如下:下面再看一个例子,模拟一个实际应用。假设,第一个任务是负责采集数据的,第二个任务是负责刷新数据显示内容的。第一个任务完成所有数据的采集之后,发送一个信号,第二个任务接收到该信号后才进行显示刷新。例3-3 本例在例3-2基础上修改,app.c中的内容改为如下:编译下载,运行结果是LED2每闪烁10次之后,LED闪烁一次。程序中对信号量的操作,Task_LED2只发送信号量,Task_LED只接收信号量。深入了解信号量的相关知识,请参考任哲嵌入式实
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 心包穿刺术详解
- 县人民医院信息化建设
- 新能源乘用车解读
- 赛犬喂养指南解读
- 数控加工技术工艺
- 手电筒幼儿讲解
- 现代农业测控技术
- 售前跟单技巧讲解
- 小学课文印刷技术
- 七下显微镜讲解
- 15D500-15D505 防雷与接地图集(合订本)
- 带状疱疹护理查房
- SX-22163-QR345工装维护保养记录
- 中国重症加强治疗病房建设与管理指南
- 2023年航空职业技能鉴定考试-候机楼服务技能考试题库(含答案)
- MBA培训进修协议
- p型半导体和n型半导体课件
- LY/T 2501-2015野生动物及其产品的物种鉴定规范
- GB/T 748-2005抗硫酸盐硅酸盐水泥
- GB 15763.1-2001建筑用安全玻璃防火玻璃
- 民间文学(全套课件)
评论
0/150
提交评论