嵌入式系统原理与应用 第7章 电脑自动打铃器设计与实现

上传人:woxinch****an2018 文档编号:44670420 上传时间:2018-06-14 格式:PPT 页数:34 大小:584KB
返回 下载 相关 举报
嵌入式系统原理与应用 第7章 电脑自动打铃器设计与实现_第1页
第1页 / 共34页
嵌入式系统原理与应用 第7章 电脑自动打铃器设计与实现_第2页
第2页 / 共34页
嵌入式系统原理与应用 第7章 电脑自动打铃器设计与实现_第3页
第3页 / 共34页
嵌入式系统原理与应用 第7章 电脑自动打铃器设计与实现_第4页
第4页 / 共34页
嵌入式系统原理与应用 第7章 电脑自动打铃器设计与实现_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《嵌入式系统原理与应用 第7章 电脑自动打铃器设计与实现》由会员分享,可在线阅读,更多相关《嵌入式系统原理与应用 第7章 电脑自动打铃器设计与实现(34页珍藏版)》请在金锄头文库上搜索。

1、电脑自动打铃器设计与实现December,2007绪论电脑自动打铃器设计与实现通过对ARM7TDMI体系结构、LPC2000系列ARM、C/OS-II 微小内核分析与程序设计基础的深入学习之后,我们已经对嵌入 式系统有了比较清晰的了解。本章将结合一个具体的实例电 脑自动打铃器来阐述嵌入式应用系统的工程设计方法。目 录设计要求任务设计硬件设计程序设计1234电脑自动打铃器设计与实现设计要求系统功能系统框图12设计要求| 电脑自动打铃器设计与实现系统功能l 具有实时时钟功能,能显示时分秒,年月日星期(采用8位数码管显示) l 具有 键盘 输入功能 l 可以设置若干个闹钟,以及闹钟的禁止与使能l 可

2、设置每个闹钟发生时的输出动作(一共四路输出,可独立设置每路输 出的时间和电平状态)设计要求| 电脑自动打铃器设计与实现系统框图LPC2000系列ARM具有RTC功能,RTC掉电后仍可使用电池继 续运行,从而保证了系统掉电后时钟的准确性。ZLG7290是一款键 盘和LED驱动芯片,最多支持64个按键和8个共阴极数码管。LPC2000ZLG7290Vcc键盘输入数码管显示SDASCLINT输出控制电脑自动打铃器设计与实现硬件设计键盘显示电路输出控制电路12硬件设计| 电脑自动打铃器设计与实现键盘显示电路本设计实例基于SmartARM2200A工控开发平台实现。SmartARM2200A 工控开发平

3、台提供I2C0接口,可以和PACK板“Panel Module ZYPM7290”连接 ,组成键盘显示电路,硬件电路及连接方法请参考配套教材。硬件设计| 电脑自动打铃器设计与实现输出控制电路图示为输出控制模拟电路,在实际应用中,可能需要控制继电器等 。电脑自动打铃器设计与实现任务设计任务的划分 任务的数据结构设计任务的优先级设计 123多任务之间的同步与互斥多任务之间的信息传递 45任务设计| 电脑自动打铃器设计与实现任务的划分对一个嵌入式应用系统进行“任务划分”,是实时操作系统应用软 件设计的关键,任务划分是否合理将直接影响软件设计的质量。以CPU为中心“关键”功能“紧迫”功能消耗机时关系密

4、切相同事件触发运行周期相同任务划分固定顺序执行任务划分原则如下:首先,以CPU为中心,将与各种输入/输出设备(或端口)相关的功能分别划 分为独立的任务发现“关键”功能,将其最“关键”部分“剥离”出来,用一个独立任务( 或ISR)完成,剩余部分用另外一个任务实现,两者之间通过通信机制沟通发现“紧迫”功能,将其最“紧迫”部分“剥离”出来,用一个独立的高优 先级任务(或ISR)完成,剩余部分用另外一个任务实现,两者之间通过通信 机制沟通将消耗机时较多的数据处理功能划分出来,封装为低优先级任务对于既“关键”又“紧迫”的功能,按“紧迫”功能处理将关系密切的若干功能组合成为一个任务,达到功能聚合的效果将由

5、相同事件触发的若干功能组合成为一个任务,从而免除事件分发机制将运行周期相同的功能组合成为一个任务,从而免除时间事件分发机制将若干按固定顺序执行的功能组合成为一个任务,从而免除同步接力通信的 麻烦任务设计| 电脑自动打铃器设计与实现任务的划分电脑自动打铃器任务划分如下:RTC中断显示任务键盘任务输出控制任务电脑打铃器电脑自动打铃器具有键盘输入功能,用于设置时钟和闹钟,因此 需要一个键盘任务。电脑自动打铃器需要有显示功能,用来显示时钟和闹钟,因此需 要一个显示任务。电脑自动打铃器需要一个输出控制任务,用来控制闹钟时间到后 各路的输出。电脑自动打铃器具有实时时钟功能,需要一个RTC中断。任务设计|

6、电脑自动打铃器设计与实现任务的优先级设计人机接口,实时性低键盘任务1输出控制任务3显示任务2RTC中断4电 脑 自 动 打 铃 器控制接口,实时性高任务设计| 电脑自动打铃器设计与实现任务的优先级设计键盘任务1输出控制任务3显示任务2RTC中断4电 脑 自 动 打 铃 器优先级:6优先级:12优先级:13任务设计| 电脑自动打铃器设计与实现任务的数据结构设计对于一个任务,除了它的代码(任务函数)外,还有相关的信息。 为保存这些信息,必须为任务设计对应的若干数据结构。任务需要配 备的数据结构分为两类:一类是与操作系统有关的数据结构;另外一 类是与操作系统无关的数据结构。任务的数任务的数 据结构据

7、结构与操作系与操作系 统有关的统有关的 数据结构数据结构与操作系与操作系 统无关的统无关的 数据结构数据结构任务设计| 电脑自动打铃器设计与实现任务的数据结构设计1.与操作系统有关的数据结构一个任务要想在操作系统的管理下工作,必须首先被创建。在 C/OS-II中,任务的创建函数原型如下:任务函数指针任务参数指针,一般设为 (void *)0任务堆栈栈顶指针任务优先级任务ID,一般设为prio任务堆栈栈底指针任务堆栈大小任务附加数据指针,一般设为(void *)0创建任务选项INT8U OSTaskCreateExt(void (*task)(void *pd), void *pdata, OS

8、_STK *ptos,INT8U prio,INT16U id,OS_STK *pbos,INT32U stk_size,void *pext,INT16U opt);任务设计| 电脑自动打铃器设计与实现任务的数据结构设计在电脑自动打铃器应用中,我们设计了3个任务(键盘任务、显示任 务和输出控制任务),与操作系统有关的数据结构定义如下:#define TASKKEY_ID12/定义键盘任务的ID #define TASKKEY_PRIOTASKKEY_ID/定义键盘任务的优先级 #define TASKKEY_STACK_SIZE512/定义键盘任务堆栈的大小#define TASKDISP_

9、ID13/定义显示任务的ID #define TASKDISP_PRIO TASKDISP_ID/定义显示任务的优先级 #define TASKDISP_STACK_SIZE512/定义显示任务堆栈的大小#define TASKCTRL_ID6/定义控制任务的ID #define TASKCTRL_PRIO TASKCTRL_ID/定义控制任务的优先级 #define TASKCTRL_STACK_SIZE 512/定义控制任务堆栈的大小OS_STK TaskKeyStkTASKKEY_STACK_SIZE; /定义键盘任务的堆栈 OS_STK TaskDispStkTASKDISP_STAC

10、K_SIZE; /定义显示任务的堆栈 OS_STK TaskCtrlStkTASKCTRL_STACK_SIZE; /定义控制任务的堆栈void TaskKey(void *pdata); /键盘任务声明 void TaskDisp(void *pdata); /显示任务声明 void TaskCtrl(void *pdata); /控制任务声明任务设计| 电脑自动打铃器设计与实现任务的数据结构设计2.与操作系统无关的数据结构电脑自动打铃器具有时钟和闹钟功能,那么我们首先就要构造这两 个数据结构,定义如下:时钟结构定义 struct time unsigned charucHour;/ 时un

11、signed charucMin;/ 分unsigned charucSec;/ 秒unsigned charucWeek;/ 星期unsigned shortusYear;/ 年unsigned charucMon;/ 月unsigned charucDay;/ 日 ; typedef struct timeTIME; typedef TIME*PTIME;闹钟结构定义 struct alarm unsigned charucHour;/ 时unsigned charucMin;/ 分unsigned charucSec;/ 秒unsigned charucEnable;/ 闹钟使能控制st

12、ruct unsigned shortusLevel;/ 输出电平控制unsigned shortusTime;/ 输出时间控制 c4;/ 4路输出控制 ; typedef struct alarmALARM; typedef ALARM*PALARM;定义时钟和闹钟全局变量#define MAX_ALARM 4/ 最大闹钟个数TIMEGtimeCurrentTime;/ 时钟全局变量ALARM GalarmRingTimeMAX_ALARM;/ 闹钟全局变量任务设计| 电脑自动打铃器设计与实现多任务之间的同步与互斥为了说明问题,我们在这里将键盘任务拆分成为两个任务,一个 是键盘扫描任务,另一

13、个是键盘处理任务,二者之间使用消息邮箱进 行同步。1.行为同步发送键值消息接收键值消息键盘扫描任务键盘处理任务消息邮箱l 键盘扫描任务 扫描到按键,就 向消息邮箱发送 键值消息;l 键盘处理任务 应及时处理键值 消息,二者之间 是同步接力的关 系。任务设计| 电脑自动打铃器设计与实现多任务之间的同步与互斥2.资源互斥在电脑自动打铃器的设计中,ZLG7290是通过I2C总线与LPC2000 连接的,I2C总线是键盘任务和显示任务的共享资源,必须遵循资源互 斥的原则进行访问,二者之间使用信号量进行资源互斥。键盘任务显示任务信号量申请I2C资源释放I2C资源申请I2C资源释放I2C资源任务设计| 电

14、脑自动打铃器设计与实现多任务之间的信息传递1.全局变量在任务的数据结构设计中,我们设计了时钟和闹钟两个数据结构, 并定义了时钟和闹钟两个全局变量。键盘任务,显示任务和RTC中断通 过它们传递信息。全局变量(时钟和闹钟)键盘任务显示任务RTC中断更新时钟 检测闹钟设置时钟和闹钟显示时钟和闹钟任务设计| 电脑自动打铃器设计与实现多任务之间的信息传递2.消息邮箱RTC中断检测闹钟,闹钟到就向输出控制任务发送控制信息, 在本设计实例中使用消息邮箱。 RTC中断输出控制任务消息邮箱发送控制消息接收控制消息人机界面设计 键盘任务主函数 123显示任务RTC中断输出控制任务 456电脑自动打铃器设计与实现程

15、序设计程序设计| 电脑自动打铃器设计与实现人机界面设计对于一个具有人机界面的应用系统来说,首先应该考虑的是人 机界面如何设计。8位数码管显示力度有限,只能通过按键分屏显示,显示界面 定义如下:时钟模式:12时 59分 59秒 星期一星期时十位时个位分十位分个位秒十位秒个位0125959程序设计| 电脑自动打铃器设计与实现人机界面设计对于一个具有人机界面的应用系统来说,首先应该考虑的是人 机界面如何设计。8位数码管显示力度有限,只能通过按键分屏显示,显示界面 定义如下:时钟模式:2007年 12月 12日固定固定年十位年个位月十位月个位日十位日个位20071212程序设计| 电脑自动打铃器设计与

16、实现人机界面设计对于一个具有人机界面的应用系统来说,首先应该考虑的是人 机界面如何设计。8位数码管显示力度有限,只能通过按键分屏显示,显示界面 定义如下:闹钟模式:A表示闹钟,0表示第一个闹钟,闹钟时间08:30:00固定索引时十位时个位分十位分个位秒十位秒个位A0083000程序设计| 电脑自动打铃器设计与实现人机界面设计对于一个具有人机界面的应用系统来说,首先应该考虑的是人 机界面如何设计。8位数码管显示力度有限,只能通过按键分屏显示,显示界面 定义如下:闹钟模式:闹钟使能控制(E使能,d禁能),从左至右,第一个是总开 关,接着是星期60(分别对应星期日星期一)的开关。E/dE/dE/dE/dE/dE/dE/dE/dEEEEEEEE程序设计| 电脑自动打铃器设计与实现人机界面设计对于一个具有人机界面的应用系统来说,首先应该考虑的是人 机界面

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号