_ 串口中断的子类型.ppt

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

*感谢聆听:等线72加粗文字阴影欢迎你:等线24不加粗校训:等线32号加粗文字阴影*务本崇实修德精业目录Content01020304湖南生物机电职业技术学院欢迎你!感谢聆听务本崇实修德精业目录Content《单片机技术应用》模块三单元一串口中断的子类型知识点1:串口中断的子类型机电工程学院串口中断的子类型中断有关的原子操作 需要一口气完成、不可被中断或线程/进程所打断的CPU操作,称为原子操作。原子操作是为了防止特定的共享资源被两个不同的程序同时访问而遭到破坏或导致异常。 根据不同的操作场合,原子操作可以是一条或几条机器码、一条或几条高级语言语句、一个或几个函数等。 为什么需要原子操作呢?一般来说,中断服务程序和API程序都需要访问(如:加/减、与/或)共享的变量(如:已接收字节计数器),而常规CPU对一个变量的高级语言操作均不是一条机器码就可完成的,需要多条来完成,普遍会采用寄存器来作中间传递。串口中断的子类型 当API程序访问该变量的多条机器码尚未执行完毕时,很可能发生相关联的中断。该中断服务程序将打断API而运行自身,并也访问该变量。 中断完成后,API中的变量会从中间寄存器取值(还是中断发生之前的值,已不是变量当前值)并操作,这样就导致变量值出错、进而引起更严重的数据访问问题。串口中断的子类型 很多高级语言的讲述书中,均乐此不疲地大肆宣扬该语言的封装性、移植性、与硬件无关性等优点,却只字不提其缺点以及其优点的适用范围,因为,显然任何事物都有两面性和适用范围。这误导了许多驱动程序的编写者也理直气壮地不理睬CPU的硬件基础和特性、还自我感觉程序的可移植性良好、却不知不觉间埋下了一些祸患。面对很多概念和原理,需要从正反两方面才能得到全面、透彻的理解。高级语言屏蔽了很多硬件特性,驱动程序的编写者对硬件特性不一定要有入木三分的理解,但至少需要明察秋毫。例如,常规CPU没有提供对一个变量增一或减一的专用指令、只提供了对通用寄存器增一或减一的专用指令。只有明白了这一硬件知识,才能显而易见一条变量增一或减一的高级语言代码不是原子操作代码,否则,就只能如很多当事人一样事后抱着头发出感慨:料想不到啊。串口中断的子类型串口中断的子类型 一个串口的中断是IRQ中断32个通道中的一个。ZA9L0共有3个串口,故共占用3个通道。 每个串口的中断,又均可分为以下几个子中断源:1.发送中断,即:一旦发送缓冲区为空,就产生中断。2.接收中断,即:一旦接收缓冲区有数据,就产生中断。3.状态中断,即:一旦串口模块的专用状态线有边沿或电平的变化,就产生中断。 这些子中断源的任何一个被触发后,均会产生所属的串口IRQ中断。在所属串口的中断服务程序中,需要通过相关UART寄存器来辨别谁产生了中断、并给予服务。 一般的串口没有支持硬件流控制,就仅有发送和接收两个中断源。特殊的串口(如:用于MODEM通讯的串口)支持硬件流控制,以上三种中断源均存在。湖南生物机电职业技术学院欢迎你!感谢聆听务本崇实修德精业***务本崇实修德精业目录Content01020304湖南生物机电职业技术学院欢迎你!感谢聆听务本崇实修德精业目录Content****感谢聆听:等线72加粗文字阴影欢迎你:等线24不加粗校训:等线32号加粗文字阴影*

文档评论(0)

***** + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档