串口中断的相关概念和原理.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
串口中断的相关概念和原理

串口中断的相关概念和原理 问题 上一篇讲述了串口轮询方式的发送和接收流程和相关寄存器。通过发送和接收函数的编程实践,我们发现轮询发送和接收时,应用程序需要不停息地轮询:轮询发送缓冲区是否为空可以发送新数据,或者接收缓冲区是否有新数据可接收。 一旦发送轮询中止,发送动作也无法开启;一旦接收轮询中止、或者接收被打断或不及时,新到的大量数据可能因接收缓冲区溢出而遭丢失。 故轮询访问方式只是一种试验性的粗糙访问方式,其适用场景很有限,且占用CPU和应用程序的大量时间、让设备忙得团团转。 要想从容不迫和得心应手地访问串口,还得采用中断方式。中断机制的采用既是迫不得已的应用需要,也是CPU设计大师们为满足现实需求而积极主动创造发明的一个妙招。 对中断的深入理解直至完美掌控可以说是IT人员绝技中的必备一招,把它掌控好了,就一切如羽扇纶巾运筹于帷幄之中,就可以像浪尖上的弄潮儿一样风里来雨里去流连于浪花里之中蓝天白云之间如庄子一样逍遥;否则,就好比一个人只会紧抱着泳圈在岸边的浑水里趟着和摸着什么;而许多疑难杂症的出现大致都与中断的控制不善有着千丝万缕的干系。 这一篇就讲述串口中断的有关概念和基本原理,但不会涉及具体的操作(留待下一讲)。这些概念和原理中,有的是串口模块特有的,有的是所有中断模块通用的。 对于我们测试人员来说,深入理解中断的技术细节、概念的来龙去脉、明白其中哪些地方容易出现设计错误,将有助于我们制定更完备的测试方案、牢牢地把控测试重点、恰当分配测试时间和精力、提高测试效率。 二、中断的类型 以不同的角度或层次来划分,一个事物的分类就不一样,中断的分类也是如此。不同体系的CPU技术手册中,对中断的分类均按照有利于自身、与自身的硬件结构相匹配的方式来进行。 这丰富了世界的多样性,却使得很多这个行当里初来乍到的人昏头转向、如理乱麻剪不断理还乱。而有些行当里,有才能和雄心的管事者们就制定一个本行当的标准,以避免或结束混乱局面。 51系列(如AT89C51)的8位单片机中,只是简单地将中断分为片内中断和片外中断两种,片内中断又仅包括两路定时器中断和一路串口中断。51系列单片机曾经如日中天、不可一世,却已是这一时代的遗老遗少,在此就一笔带过。 这里重点讲述S80CPU ZA9L0的中断分类。 ZA9L0使用的是ARM9处理器(由英国ARM公司提供),该处理器文档将我们通常所称的中断命名为exception(异常),而不是interrupt。我们还是以常规的“中断”来称呼吧。 该处理器将中断划分成如下7类: 1.复位 硬件复位引起的中断,用于系统重启。 2.数据中止(Data Abort) 非法访问不允许访问的地址或者非对齐的地址时,就产生该中断。 所谓不允许访问的地址,是指MMU配置表中未列出的供当前模式访问的地址区间。 非对齐的地址,是针对短整数和长整数而言的地址。ARM规定,短整数(2字节)应从2的整数倍位置开始存取,长整数(4字节)应从4的整数倍位置开始存取。 3.快速中断请求(FIQ,Fast Interrupt Request) 用于发起比IRQ能得到更快响应的中断请求。ARM规定,系统中最多只为一个模块开这样的小灶。 FIQ由谁来触发呢?这是可以设定的,即可软件配置从32个触发通道中的某一个来触发,例如:定时器0通道。 4.中断请求(IRQ,Interrupt Request) 用于发起常规的内部设备或外部设备的中断请求,它是我们最需要关注的一类中断。 由于总线宽度是32位,很自然地,最多可支持固定的32个通道的子中断请求。 请注意,这里说的是32个通道/channel。由于单个GPIO中断通道(GPIO0A~GPIO2B)是很多口线合用的中断,即多个模块可合用一个GPIO中断通道,故实际的最大中断源模块个数大于32。 除IC卡以外的常见模块(如:串口、定时器、打印机、MODEM、以太网控制器)的中断都包含在这一中断类型中。 ZA9L0的32种IRQ中断列示如下: 图1:ZA9L0的32种IRQ中断 在上面的表格中,能看到9个定时器中断(TM0~TM8)、三个串口中断(UART0~UART2),却没有看到打印机、MODEM、以太网控制器等模块的中断。这三个模块难道不需要中断吗? 其实,这三个模块的中断主要是以GPIO(GPIO0A~GPIO2B)的形式存在的,根据实际的硬件连接对应到相应的GPIO端口上。此外,这些模块还同时使用到了定时器中断,这也是ZA9L0大手笔地设计了9个定时器中断的原因。 由于GPIO中断是很多口线合用的中断、不像各定时器中断均是独用的中断,串口中断还可进一步细分为发送中断、接收中断、状态中断等,其它子中断也可能有类似细分,故从IRQ来看,ARM的中断层次最多分为三层。每一层均可再进行分类。 图2:IRQ的

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档