《物联网系统设计与应用开发》课件3-2 任务2 外部中断_第1页
《物联网系统设计与应用开发》课件3-2 任务2 外部中断_第2页
《物联网系统设计与应用开发》课件3-2 任务2 外部中断_第3页
《物联网系统设计与应用开发》课件3-2 任务2 外部中断_第4页
《物联网系统设计与应用开发》课件3-2 任务2 外部中断_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

什么是中断01什么是外部中断02

任务:按键控制LED03目录1中断概述中断(interrupt)是什么?CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生);CPU暂时中断当前的工作,转去处理事件B(中断响应或中断服务);待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断。中断的作用?

(1)提高工作效率中断使单片机系统具备应对突发事件的能力,提高CPU的工作效率。(2)实现实时处理(3)实现异常处理1中断概述CC2530共18个中断源中断请求可以通过设置中断使能寄存器IEN0、IEN1或IEN2的中断使能位使能或禁止中断当相应的中断源使能并发生时,中断标志位将自动置1,然后程序跳往中断服务程序的入口地址执行中断服务程序。待中断服务程序处理完毕后,由硬件清除中断标志位。定时器3捕获/比较/溢出定时器4捕获/比较/溢出ADC转换结束DMA传输完成睡眠计时器比较看门狗计时溢出AES加密/解密完成RF通用中断RF发送完成或接收完成I/O端口0外部中断I/O端口1外部中断I/O端口2外部中断USART0发送完成USART0接收完成USART1发送完成USART1接收完成定时器1捕获/比较/溢出定时器2中断中断源interruptenable中断使能中断使能寄存器中断使能寄存器中断使能寄存器中断向量中断服务程序的入口地址即中断向量,中断向量定义在头文件“ioCC2530.h”中:#defineRFERR_VECTORVECT(0,0x03)/*RF内核错误中断*/#defineADC_VECTORVECT(1,0x0B)/*ADC转换结束*/#defineURX0_VECTORVECT(2,0x13)/*USART0RX完成*/#defineURX1_VECTORVECT(3,0x1B)/*USART1RX完成*/#defineENC_VECTORVECT(4,0x23)/*AES加密解密完成*/#defineST_VECTORVECT(5,0x2B)/*睡眠定时比较*/#defineP2INT_VECTORVECT(6,0x33)/*端口2中断*/#defineUTX0_VECTORVECT(7,0x3B)/*USART0TX完成*/#defineDMA_VECTORVECT(8,0x43)/*DMA传输完成*/#defineT1_VECTORVECT(9,0x4B)/*Timer1捕获/比较/溢出*/#defineT2_VECTORVECT(10,0x53)/*Timer2(MACTimer)*/#defineT3_VECTORVECT(11,0x5B)/*Timer3捕获/比较/溢出*/#defineT4_VECTORVECT(12,0x63)/*Timer4捕获/比较/溢出*/#defineP0INT_VECTORVECT(13,0x6B)/*端口0中断*/#defineUTX1_VECTORVECT(14,0x73)/*USART1TX完成*/#defineP1INT_VECTORVECT(15,0x7B)/*端口1中断*/#defineRF_VECTORVECT(16,0x83)/*RF通用中断*/#defineWDT_VECTORVECT(17,0x8B)/*看门狗计时溢出*/1中断概述外部中断:即从单片机的I/O口向单片机输入电平信号,当输入电平信号的改变符合设置的触发条件时,中断系统便会向CPU提出中断请求。I/O端口0外部中断I/O端口1外部中断I/O端口2外部中断总共3个外部中断2外部中断P0口P1口P2口外部中断使能步骤PICTL

设置中断触发方式0:上升沿;1:下降沿PxIEN

端口引脚中断IENx

中断使能寄存器EA=1

总中断使能PxIFG=0;PxIF=0;2外部中断IEN1|=0x20;P0IEN|=0x02;PICTL|=0x01中断完成后要清除中断标志位相关寄存器配置相关寄存器配置

中断编程

中断编程的一般过程如下:

(1)

中断设置:根据外设的不同,具体的设置是不同的,一般至少包含启用中断。

(2)中断函数的编写;这是中断编程的主要工作,需要注意的是,中断函数应尽可能地减少耗时或不进行耗时操作。2外部中断S1按键中断配置函数:voidInitKey_S1(){IEN1|=0x20;//允许P0口中断;00100000P0IEN|=0x02;//P0.1设置为允许中断PICTL|=0x01;//下降沿触发

EA=1;//打开总中断}2外部中断中断函数在IAR中用关键字

__interrupt来定义一个中断函数。使用

#progmavector来提供中断函数的入口地址(即中断向量),并且中断函数没有返回值,没有函数参数。中断函数的一般格式如下:

#pragmavector=中断向量

__interruptvoid函数名(void)

{

//中断程序代码

}2外部中断/*S1中断处理函数*/#pragmavector=P0INT_VECTOR__interruptvoidP0_ISR(void){DelayMS(10);//延时去抖

LED1=~LED1;//改变LED1状态

P0IFG=0;//清中断标志

P0IF=0;//清中断标志}中断函数任务:按键中断控制LED图3-5按键电路图本任务是实现按键控制LED亮灭,相关电路如图3-5所示,图中可以看出按键S1接在了CC2530的P0.1管脚上,当按下按键S1时,P0.1管脚变为低电平;松开按键,P0.1管脚变为高电平。我们可以设置单片机检测P0.1管脚上升沿或者是下降沿来触发中断。任务:按键中断控制LED图3-6任务流程图程序流程图如图3-6所示。源码分析主函数实现了以下功能:(1)初始化LED灯函数InitLed():设置P1_0为普通I/O口,设置P1为输出。(2)按键的初始化函数InitKey():配置外部中断的相关寄存器。(3)使用while(1)等待中断即可。/*main函数*/voidmain(void){InitLed();//设置LED灯相应的IO口

InitKey();//设置S1相应的IO口

while(1){}}源码分析LED灯初始化函数按键的初始化,根据图3-5按键原理图可知,将P0.1的I/O口设置为外部中断,下降沿触发。/*LED灯初始化函数*/voidInitLed(void){P1DIR|=0x01;//P1.0定义为输出口

LED1=1;//LED1灯上电默认为熄灭}/*按键初始化函数*/voidInitKey(){P0IEN|=0x02;//P0.1设置为中断方式1:中断使能

PICTL|=0x01;//下降沿触发

IEN1|=0x20;//允许P0口中断;P0IFG=0x00;//初始化中断标志位

EA=1;//打开总中断}源码分析当检测到有外部中断(按键中断)即按键按下时,便会触发中断处理函数,LED灯状态翻转。/*中断处理函数*/#pragmavector=P1INT_VECTOR__interruptvoidP1_ISR(void){DelayMS(10);//延时去抖

LED1=~LED1;//改变LED1状态

P1IFG=0;//清中断标志

P1IF=0;//清中断标志}操作步骤(1)编写程序并编译,正确连接CC2530开发板与仿真器,选择“Project→Downloadanddebug”将程序下载到CC2530开发板中(2)下载完后可以单击“Debug→Go”全速运行,也可以将CC2530重新上电或者按下复位按钮让刚才下载的程序重新运行。(3)程序运行后,按下按键,会发现LED的亮灭状态会发生改变。感谢观看THANKYOUPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.Plea

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论