- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第七章 μc/OS-Ⅱ信号量与互斥信号量; 在项目ZLX08的基础上新建项目ZLX09,保存在目录D:\ZLXLPC824\ZLX09下,此时的项目ZLX09
与ZLX08相同。新建文件task02.c、task02.h、task03.c和task03.h,保存在目录
D:\ZLXLPC824\ZLX09\User目录下,然后修改文件includes.h、task01.c和task01.h。将
task02.c和task03.c添加到工程的USER分组下,完成后的项目工作界面如图7-1所示。
图7-1 项目ZLX09工作界面
; 由图7-1可知,项目ZLX09包括3个用户任务,即Task01、Task02和Task03,以及3个系统任务,
即空闲任务、统计任务和定时器任务,各个任务的信息如表7-1所示。
表7-1 项目ZLX09包含的任务的信息
表7-1中,3个系统任务的任务函数名、ID号和堆栈名是由μC/OS-Ⅱ指定的,而优先级号和堆
栈大小由用户配置的,表中堆栈的大小以字为单位,每个字等于4个字节。这里,用户任务
Task01通过串口向上位机发送一些项目执行信息,即反馈给用户项目的执行情况。用户任务
Task02用于周期性地释放信号量Sem01,用户任务Task03始终请求信号量Sem01,从而同步
Task02的执行。
; 项目ZLX09的执行流程如图7-2所示。
图7-2 项目ZLX09的执行流程
; 由图7-2可知,项目ZLX09共有6个任务,其中用户任务3个,即Task01、Task02和Task03,系统
任务3个,即空闲任务、统计任务和定时器任务。在main函数中创建第一个用户任务Task01,然
后开启多任务。在用户任务Task01中创建信号量Sem01和用户任务Task02和Task03,一般地,在
基于μC/OS-Ⅱ系统的多任务应用程序中,在第一个用户任务中创建工程中用到的事件和其他
的用户任务。在启动多任务后,用户任务Task01每3秒执行一次,通过串口向上位机输出工程中
的任务总个数、每秒任务切换数和CPU利用率等信息;用户任务Task02每1秒执行一次,释放信
号量Sem01;用户任务Task03始终请求信号量Sem01,当信号量Sem01的值为0时,处于等待态,如
果信号量Sem01的值大于0或有任务正在释放信号量Sem01,则用户任务Task03进入就绪态,如果
Task03是工程中就绪的最高优先级任务,则Task03将获得CPU使用权而进入执行态,通过串口向
上位机发送信息“Running...”。由于信号量Sem01是由任务Task02每1秒释放一次的,因
此,Task03每1秒执行一次,即通过信号量Sem01任务Task03的运行与Task02同步。
回到图7-1所示界面,编译链接并运行项目ZLX09,计算机串口调试助手的显示信息如图7-3所
示。
图7-3显示的项目ZLX09中共有6个任务,每秒任务的切换次数为33次(用户任务Task01每3秒
切换一次,Task02和Task03均为每1秒切换1次,统计任务每1秒切换10次,定时器任务每1秒切换
10次,空闲任务每1秒约切换10次,共计约33次),CPU使用率为1%,优先级号为4的用户任务
Task01的堆栈使用了148字节,空闲172字节。
图7-3请看下页
;
图7-3 计算机串口调试助手显示信息
; 嵌入式控制系统中最常用的部件是按键和七段数码管,用作系统的输入设备和输出设备,
ZLG7289B为专用于驱动按键和数码管的芯片。一片ZLG7289B可同时驱动64个按键和8个七段数
码管(即64个LED灯)。LPC824学习板上集成了一片ZLG7289B芯片,驱动了16个按键、8个LED灯
和一个四合一七段数码管,电路原理图参考第3.7节。
ZLG7289B芯片管脚布局如图7-4所示。
图7-4 ZLG7289B芯片管脚布局
; 图7-4中各个管脚的作用如表7-2所示。
表7-2 ZLG7289B芯片各个管脚的含义
; 表7-2中的“数码管段选信号”是指用于驱动七段数码管中的某个段的控制信号,一般连接
到数码管的8个段控制管脚的某一脚上(8个段控制管脚为a、b、c、d、e、f、g和小数点
dp);“数码管字选信号”也常被称为“数码管位选信号”,是指用于驱动单个数码管的控制信
号,一般连接到数码管的公共有效端,由于ZLG7289B只能驱动共阴式数码管,所以数码管字选信
号连接到单个数码管的阴极公共端。图7-5示意了七段数码管各个段的位置。
图7-5 七段数码管各个段的显示位置; 结合第三章3.1节和3.7-节可知在LPC824学习板上,ZLG7289B通过四根总线与LPC824微控制
器相连接,这四根总线的连接方式为:Z
文档评论(0)