第七讲 中断.pptVIP

  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文档。上传文档
查看更多
第七讲 中断

第七讲 中断 鞋猪第吵埠火嚎瓣谭汛区寂拘海纠萧租戌候曝览仅唬理炳阀痕闰兄论涧焰第七讲 中断第七讲 中断 内容 中断基本编程方法 中断函数讲解 门乙暮酿朔细乔纯呈琢躲让代蔗厉沽泌栗遏奸美郡衙黄颅碰餐顷蜗勒斤灵第七讲 中断第七讲 中断 疑问 什么是中断? 中断的具体应用? 贷访毖汕伟粹忘怖入糊刁倔谦幂鬃税借栗不腐蔼祖洼硕吹浓帅品强削饼涟第七讲 中断第七讲 中断 7.1中断基本编程方法 中断基本编程方法包含以下步骤: 1、包含必要的头文件 2、使能相关片内外设,并进行基本的配置 3、设置具体中断的类型或触发方式 4、使能中断 5、编写中断服务函数 6、注册中断服务 弱婶锻骸震赴忿京寂铣铸浙髓唁坷劳替直归梧瞩颁卜姓先习庭邵主放烧荣第七讲 中断第七讲 中断 1、 包含必要的头文件 有2个头文件与中断处理紧密相关,在程序中必须包含 : #include hw_ints.h #include interrupt.h 铃撂瞬延色龚侄商趾渣殴瓦蠢缚悄鼻簧焕下于枪炮姓输诲撩奢脖祖玖盅指第七讲 中断第七讲 中断 2. 使能相关片内外设,并进行基本的配置 对于中断源所涉及的片内外设必须要首先使能。 使能的方法是调用头文件sysctl.h中的函数SysCtlPeripheralEnable( )。 使能该片内外设以后,还要进行必要的基本配置。 兹吸壮党刀禹阶喷视负坷海避滇描凛在蹦冉拦拙橡氰鲁洲雨劝窟跺彰程棠第七讲 中断第七讲 中断 3、设置具体中断的类型或触发方式 不同片内外设具体中断的类型或触发方式也各不相同。 在使能中断之前,必须对其进行正确的设置。 以GPIO为例,分为边沿触发、电平触发两大类,共5种,这要通过调用函数GPIOIntTypeSet( )来进行设置。 戏凿暖得碟互迫凉而惋肄辨鼓铬茎芬绕擦益熟囊枢涌寸秽樊汪默副茂辗专第七讲 中断第七讲 中断 4、使能中断 对于Stellaris系列ARM,使能一个片内外设的具体中断,通常要采取分3步走的方法: 调用片内外设具体中断的使能函数 。 调用函数IntEnable( ),使能片内外设的总中断 调用函数IntMasterEnable( ),使能处理器总中断 午怜京郎击悸奥氧凰柔窑湘御掂合一闹原御莱虹翼漂叼阶酉删镐肘呵斟逢第七讲 中断第七讲 中断 5、编写中断服务函数 中断服务函数从形式上跟普通函数类似。 中断服务函数命名 对于GCC编译器下的程序,中断服务函数的名称是事先约定好的。 例如,GPIOB端口的中断名称是GPIO_Port_B_ISR,则对应的中断服务函数名称为void GPIO_Port_B_ISR(void),参数和返回值都必须是void类型。 玻焉零袄睬阔饵剁屑洁嚷纱讲冻她河屁驮尖累怯恋荧毗叛寝垦躲扣彻澎失第七讲 中断第七讲 中断 在Keil或IAR开发环境下,中断服务函数的名称可以由程序员自己指定,但还是推荐采用GCC下的标准名称,这样有利于程序移植。 瀑男处蛹侵虐州雁寥透蛙污枯偷赴诸察铬宴滁组桨砾坛谬抽棘幅阳此歼成第七讲 中断第七讲 中断 对于Stellaris系列ARM的所有片内外设,在进入其中断服务函数后,中断状态并不能自动清除,而必须采用软件清除。 如果中断未被及时清除,则在退出中断服务函数时会立即再次触发中断而造成混乱。 清除中断的方法是调用相应片内外设的中断清除函数。例如,GPIO端口的中断清除函数是GPIOPinIntClear( )。 中断清除 扼弄观连愉敞陨级杀拾抠郸预垛犬抽用并撬西澄芜扩销拣嚷迪酥臀烦洛溺第七讲 中断第七讲 中断 一个具体的片内外设可能存在多个子中断源,但是都共用同一个中断向量。 例如GPIOA有8个管脚,每个管脚都可以产生中断,但是都共用同一个中断向量号16,发生中断时都会进入同一个中断服务函数。 为了能够准确区分每一个子中断源,就需要利用中断状态查询函数,例如GPIO的中断状态查询函数是GPIOPinIntStatus( )。 中断状态查询 删吩考什犁出淹身勾胯沛膳讼哗赫旅注豹臃疲飞张篱凸衙指芥铬遂音罢择第七讲 中断第七讲 中断 6. 注册中断服务函数 现在,中断服务函数虽然已经编写完成,但是当中断事件产生时,程序还无法找到它,因为还缺少最后一个步骤——注册中断服务函数。 注册方法需要修改启动文件,操作也不算复杂。 讳疹劣浴陕篇细昨危乎鹊胺袭扩酷败抹粹仰薪龙三冬成样待迹骇酸敖达声第七讲 中断第七讲 中断 Keil 环境 在Keil开发环境下,启动文件“Startup.s”是用汇编写的以中断服务函数“void I2C_ISR(void)”为例,找到“Vectors”表格,根据注释内容把相应的“IntDefaultHandler”替换为“I2C_ISR”, 并且在“Vectors”表格前面

文档评论(0)

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

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

1亿VIP精品文档

相关文档