第七讲中断精选文档.ppt
《第七讲中断精选文档.ppt》由会员分享,可在线阅读,更多相关《第七讲中断精选文档.ppt(39页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第七讲中断本讲稿第一页,共三十九页内容n中断基本编程方法n中断函数讲解本讲稿第二页,共三十九页疑问n什么是中断?n中断的具体应用?本讲稿第三页,共三十九页7.1中断基本编程方法 n中断基本编程方法包含以下步骤:q1、包含必要的头文件 q2、使能相关片内外设,并进行基本的配置 q3、设置具体中断的类型或触发方式q4、使能中断q5、编写中断服务函数q6、注册中断服务本讲稿第四页,共三十九页1、包含必要的头文件n有2个头文件与中断处理紧密相关,在程序中必须包含:#include#include 本讲稿第五页,共三十九页2 使能相关片内外设,并进行基本的配置 n对于中断源所涉及的片内外设必须要首先使能
2、。n使 能 的 方 法 是 调 用 头 文 件 中 的 函 数 SysCtlPeripheralEnable()。n使能该片内外设以后,还要进行必要的基本配置。本讲稿第六页,共三十九页3、设置具体中断的类型或触发方式n不同片内外设具体中断的类型或触发方式也各不相同。n在使能中断之前,必须对其进行正确的设置。n以GPIO为例,分为边沿触发、电平触发两大类,共5种,这要通过调用函数GPIOIntTypeSet()来进行设置。本讲稿第七页,共三十九页4、使能中断 对于Stellaris系列ARM,使能一个片内外设的具体中断,通常要采取分3步走的方法:q调用片内外设具体中断的使能函数。q调用函数Int
3、Enable(),使能片内外设的总中断 q调用函数IntMasterEnable(),使能处理器总中断 本讲稿第八页,共三十九页5、编写中断服务函数 n中断服务函数从形式上跟普通函数类似。n中断服务函数命名 对于GCC编译器下的程序,中断服务函数的名称是事先约定好的。n例如,GPIOB端口的中断名称是GPIO_Port_B_ISR,则对应的中断服务函数名称为void GPIO_Port_B_ISR(void),参数和返回值都必须是void类型。本讲稿第九页,共三十九页n在Keil或IAR开发环境下,中断服务函数的名称可以由程序员自己指定,但还是推荐采用GCC下的标准名称,这样有利于程序移植。本
4、讲稿第十页,共三十九页q对于Stellaris系列ARM的所有片内外设,在进入其中断服务函数后,中断状态并不能自动清除,而必须采用软件清除。q如果中断未被及时清除,则在退出中断服务函数时会立即再次触发中断而造成混乱。q清除中断的方法是调用相应片内外设的中断清除函数。例如,GPIO端口的中断清除函数是GPIOPinIntClear()。中断清除 本讲稿第十一页,共三十九页n一个具体的片内外设可能存在多个子中断源,但是都共用同一个中断向量。n例如GPIOA有8个管脚,每个管脚都可以产生中断,但是都共用同一个中断向量号16,发生中断时都会进入同一个中断服务函数。n为了能够准确区分每一个子中断源,就需
5、要利用中断状态查询函数,例如GPIO的中断状态查询函数是GPIOPinIntStatus()。中断状态查询本讲稿第十二页,共三十九页6.注册中断服务函数n现在,中断服务函数虽然已经编写完成,但是当中断事件产生时,程序还无法找到它,因为还缺少最后一个步骤注册中断服务函数。n注册方法需要修改启动文件,操作也不算复杂。本讲稿第十三页,共三十九页Keil 环境环境n在Keil开发环境下,启动文件“Startup.s”是用汇编写的以 中 断 服 务 函 数“void I2C_ISR(void)”为 例,找 到“Vectors”表 格,根 据 注 释 内 容 把 相 应 的“IntDefaultHandl
6、er”替换为“I2C_ISR”,n并且在“Vectors”表格前面插入声明“EXTERN I2C_ISR”完成。本讲稿第十四页,共三十九页n在上述几个步骤完成后,就可以等待中断事件的到来了。当中断事件产生时,程序就会自动跳转到对应的中断服务程序中去。本讲稿第十五页,共三十九页7.2 中断库函数讲解 n中断的使能与禁止 n与GPIO端口中断相关的函数n中断优先级 n中断服务函数的注册与注销本讲稿第十六页,共三十九页7.2.1 中断的使能与禁止qIntMasterEnable()qIntMasterDisable()qIntEnable()qIntDisable()本讲稿第十七页,共三十九页nIn
7、tMasterEnable()n功能 使能处理器中断 n原型 void IntMasterEnable(void)n参数 无 n返回 无 nIntMasterDisable()n功能 禁止处理器中断 n原型 void IntMasterDisable(void)n参数 无 n返回 无 本讲稿第十八页,共三十九页n函数IntEnable()对某个片内功能模块的中断进行总体上的使能控制。n由函数IntEnable()进行使能控制的中断分为两大类:一类是属于ARM Cortex-M3内核的,如NMI、SysTick等;另一类是片内外设的,如GPIO、UART、PWM等。IntEnable()本讲稿第
8、十九页,共三十九页n在表当中,中断向量号在15以内的属于ARM Cortex-M3内核中断,在16以上的属于Stellaris系列ARM片内外设中断。本讲稿第二十页,共三十九页本讲稿第二十一页,共三十九页本讲稿第二十二页,共三十九页本讲稿第二十三页,共三十九页q功能:禁止一个片内外设的中断 q原型:void IntDisable(unsigned long ulInterrupt)q参数 ulInterrupt:指定被使能的片内外设中断,具体取值请参考表的描述 IntDisable()本讲稿第二十四页,共三十九页7.2.2 与GPIO端口相关的中断函数nGPIOIntTypeSet()nGPI
9、OPinIntEnable()nGPIOPinIntClear()nGPIOPinIntStatus()本讲稿第二十五页,共三十九页1、GPIOIntTypeSet()q功能:设置所选GPIO端口指定引脚的中断触发方式。q原型:void GPIOIntTypeSet(unsigned long ulPort,unsigned char ucPins,unsigned long ulIntType)qulPort:所选GPIO端口的基址 qucPins:指定具体的管脚qulIntType:指定中断触发机制的类型。本讲稿第二十六页,共三十九页ulIntType是指定中断触发机制的类型,应当取下列值
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第七 中断 精选 文档
限制150内