第七讲 中.pptVIP

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、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”表格前面插入声明“EXTERN I2C_ISR”完成。 在上述几个步骤完成后,就可以等待中断事件的到来了。当中断事件产生时,程序就会自动跳转到对应的中断服务程序中去。 7.2 中断库函数讲解 中断的使能与禁止 与GPIO端口中断相关的函数 中断优先级 中断服务函数的注册与注销 7.2.1 中断的使能与禁止 IntMasterEnable( ) IntMasterDisable( ) IntEnable( ) IntDisable( ) IntMasterEnable( ) 功能 使能处理器中断 原型 void IntMasterEnable(void) 参数 无 返回 无 IntMasterDisable( ) 功能 禁止处理器中断 原型 void IntMasterDisable(void) 参数 无 返回 无 函数IntEnable( )对某个片内功能模块的中断进行总体上的使能控制。 由函数IntEnable( )进行使能控制的中断分为两大类:一类是属于ARM Cortex-M3内核的,如NMI、SysTick等;另一类是片内外设的,如GPIO、UART、PWM等。 在表当中,中断向量号在15以内的属于ARM Cortex-M

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档