1、单片机原理与应用单片机原理与应用2高速时钟的设置:高速时钟的设置:如设置成如设置成32M时钟步骤:时钟步骤:1.选择外部32MHz晶振作为主时钟源;2.等待32MHz晶振稳定 3.当前系统时钟不分频如设置成如设置成8M时钟步骤:时钟步骤:将上述第3步中修改成:当前系统时钟4分频串口控制器初始化编程:串口控制器初始化编程:1.设置为设置为32M时钟;时钟;2.选择串口外设备用位置(位置选择串口外设备用位置(位置1或者位置或者位置2););3.初始化初始化I/O口为外部设备;口为外部设备;4.设置中断优先级;设置中断优先级;5.选择同步异步通信方式:选择同步异步通信方式:UART方式方式6.设置波
2、特率(查表)设置波特率(查表)串口发送:串口发送:查询状态位;或者通过中断标志位查询状态位;或者通过中断标志位 串口接收:串口接收:查询状态位;或者通过中断标志位查询状态位;或者通过中断标志位3本周教学主要内容本周教学主要内容 中断概述 CC2530中断原理(难点)CC2530中断编程(重点)4教学目标教学目标 理解中断的概念、一般处理步骤;理解中断的概念、一般处理步骤;掌握掌握CC2530CC2530中断原理中断原理;掌握掌握CC2530CC2530中断编程步骤。中断编程步骤。5CPU与外部设备之间数据传送方式主要有以下几种:(1)无条件传送(适用设备类型有限):适用于总是准备好的外设)无条
3、件传送(适用设备类型有限):适用于总是准备好的外设,如我如我们已经们已经通过实验使用了无条件传送方式点亮发光二极管通过实验使用了无条件传送方式点亮发光二极管;(2)查询方式(浪费)查询方式(浪费cpu资源):传送数据之前需要先查询设备的状态资源):传送数据之前需要先查询设备的状态,状态满足要求则传送,否则等待,如我们用查询方式使用串口;,状态满足要求则传送,否则等待,如我们用查询方式使用串口;(3)中断方式:当外设满足传送数据状态时(如串口控制器的发送缓冲)中断方式:当外设满足传送数据状态时(如串口控制器的发送缓冲区空或接收缓冲区慢)会向区空或接收缓冲区慢)会向cpu发出请求信号,强迫发出请求
4、信号,强迫cpu暂停暂停“手头的工作手头的工作”,转去处理该外设,完毕后再继续原来的,转去处理该外设,完毕后再继续原来的“工作工作”;(4)直接存储器()直接存储器(DMA)存取(有兴趣的可以自己可查阅相关资料)存取(有兴趣的可以自己可查阅相关资料)已经实现已经实现已经实现已经实现6 CPU在硬件上对中断的支持:在硬件上对中断的支持:(1)具有中断请求输入信号管脚;)具有中断请求输入信号管脚;(2)每执行完一条指令都会检测是否有中断请求信号;)每执行完一条指令都会检测是否有中断请求信号;主主程程序序断点断点继继续续执执行行主主程程序序响应中断请求响应中断请求返回主程序返回主程序中中断断服服务务
5、程程序序(1 1)中断服务程序:中断服务程序:CPUCPU响应中断后,转去执行相应响应中断后,转去执行相应的处理程序,该处理程序通常称之为中断服务程序。的处理程序,该处理程序通常称之为中断服务程序。(2 2)主程序:主程序:原来正常运行的程序称为主程序。原来正常运行的程序称为主程序。(3 3)断点:断点:主程序被断开的位置(或地址)称为断点。主程序被断开的位置(或地址)称为断点。(4 4)中断源:中断源:引起中断的原因,或能发出中断申请的引起中断的原因,或能发出中断申请的来源,称为中断源。来源,称为中断源。(5 5)中断请求:中断请求:中断源要求服务的请求称为中断请求中断源要求服务的请求称为中
6、断请求(或中断申请)。(或中断申请)。7中断响应的一般过程中断响应的一般过程(1)中断请求)中断请求 当外部设备就绪时会产生一个中断请求信号加到当外部设备就绪时会产生一个中断请求信号加到CPU的中断请求输入端的中断请求输入端,即对,即对CPU提出中断请求。对于中断请求信号,需注意两个问题:提出中断请求。对于中断请求信号,需注意两个问题:a)有效的中断请求电平保持到被有效的中断请求电平保持到被cpu发现;发现;b)当当cpu响应请求后应当有效的请求电平去掉;响应请求后应当有效的请求电平去掉;在使用中断控制器时(大多数如此),在使用中断控制器时(大多数如此),cpu的中断响应信号就能做到这的中断响
7、应信号就能做到这一点,若自己构成中断请求硬件时,需要注意以上两个问题;一点,若自己构成中断请求硬件时,需要注意以上两个问题;(2)中断响应)中断响应CPU在每条指令执行的最后一个时钟周期监测中断请求输入管在每条指令执行的最后一个时钟周期监测中断请求输入管脚有无请求发生,脚有无请求发生,而后决定是否对它做出响应。而后决定是否对它做出响应。(3)断点保护)断点保护为了中断处理完毕后为了能接着处理被中断的事情,为了中断处理完毕后为了能接着处理被中断的事情,CPU硬件硬件需要对硬件现场进行保护。需要对硬件现场进行保护。8(4)中断源识别)中断源识别 当有多个中断源时,一旦中断请求发生,当有多个中断源时
8、,一旦中断请求发生,cpu须判断是哪须判断是哪一个中断源提出请求。一般有两种确定中断源的方法:一个中断源提出请求。一般有两种确定中断源的方法:a:软件查询;软件查询;b:中断向量法;中断向量法;(大多数如此)(大多数如此)利用不同的中断向量,从而确定是来自不同的中断源。利用不同的中断向量,从而确定是来自不同的中断源。(5)中断服务)中断服务 程序员所编写的中断处理程序统称中断服务程序,这也是程序员所编写的中断处理程序统称中断服务程序,这也是中断处理需要程序员所做的主要工作;中断处理需要程序员所做的主要工作;(6)断点恢复)断点恢复(7)中断返回)中断返回9 中断由中断源引起,中断源由相应的寄存
9、器来控制。中断由中断源引起,中断源由相应的寄存器来控制。当需要使用中断时,需配置相应的中断寄存器来开启当需要使用中断时,需配置相应的中断寄存器来开启中断,当中断发生时将跳入中断服务函数中执行此中中断,当中断发生时将跳入中断服务函数中执行此中断所需要处理的事件断所需要处理的事件。中断源与中断向量中断源与中断向量 l CC2530片内具有一个中断控制器,能够同时对片内具有一个中断控制器,能够同时对1818路中断源路中断源进行管理进行管理,每个中断源都可以产生中断请求,中断请求可以,每个中断源都可以产生中断请求,中断请求可以通过设置中断使能通过设置中断使能SFR寄存器的中断使能位寄存器的中断使能位I
10、EN0、IEN1或或IEN2使能或禁止中断。使能或禁止中断。10中断中断号码号码描述描述中断中断名称名称中断中断向量向量中断屏蔽中断屏蔽中断标志中断标志0RF TX RFIO下溢或下溢或RX FIFO溢出溢出RFERR03HIEN0.RFERRIETCON.RFERRIF(1)1ADC转换结束转换结束ADC0BHIEN0.ADCIETCON.ADCIF(1)2USART0 RX完成完成URX013HIEN0.URX0IETCON.URX0IF(1)3USART1 RX完成完成URX11BHIEN0.URX1IETCON.URX1IF(1)4AES加密加密/解密完成解密完成ENC23HIEN0.
11、ENCIES0CON.ENCIF5睡眠计时器比较睡眠计时器比较ST2BHIEN0.STIEIRCON.STIF6端口端口2输入输入/USBP2INT33HIEN2.P2IEIRCON2.P2IF(2)7USART0 TX完成完成UTX03BHIEN2.UTX0IEIRCON2.UTX0IF8DMA传送完成传送完成DMA43HIEN1.DMAIEIRCON.DMAIF9定时器定时器1(16位)捕获位)捕获/比较比较/溢出溢出T14BHIEN1.T1IEIRCON.T1IF(1)()(2)10定时器定时器2T253HIEN1.T2IEIRCON.T2IF(1)()(2)11定时器定时器3(8位)捕
12、获位)捕获/比较比较/溢出溢出T35BHIEN1.T3IEIRCON.T3IF(1)()(2)12定时器定时器4(8位)捕获位)捕获/比较比较/溢出溢出T463HIEN1.T4IEIRCON.T4IF(1)()(2)13端口端口0输入输入P0INT6BHIEN1.P0IEIRCON.P0IF(2)14USART 1 TX完成完成UTX173HIEN2.UTXIEIRCON2.UTX1IF15端口端口1输入输入P1INT7BHIEN2.P1IEIRCON2.P1IF(2)16RF通用中断通用中断RF83HIEN2.RFIES1CON.RFIF(2)17看门狗定时器溢出看门狗定时器溢出WDT8BH
13、IEN2.WDTIEIRCON.WDTIF(1 1)当调用中断处理程序时会由硬件清除中断;)当调用中断处理程序时会由硬件清除中断;(2 2)表示还存在子级中断)表示还存在子级中断11我们已经大致指导如何编写中断处理程序了,但要保证让中断处理程序真正得到调我们已经大致指导如何编写中断处理程序了,但要保证让中断处理程序真正得到调用前,我们还得对中断控制器进行初始化,如何初始化?还得理解中断信号从源头用前,我们还得对中断控制器进行初始化,如何初始化?还得理解中断信号从源头如何一步步传到如何一步步传到CPUCPU的。的。1818路中断总开关路中断总开关 优先级排队,优先级排队,得到第一名的将得到第一名
14、的将会得到响应,多会得到响应,多个第一名则按顺个第一名则按顺序轮询序轮询 18 18路中断分开关路中断分开关带阴影的标志位带阴影的标志位会有硬件清除会有硬件清除12我们可以这样认为,当发生了某个中断:我们可以这样认为,当发生了某个中断:PC(PC(指令计数器指令计数器)对应的断向量,对应的断向量,也就是说,也就是说,cpucpu将会执行对应的中断向量处的指令。将会执行对应的中断向量处的指令。-1212 -1.中断源与中断向量中断源与中断向量 l 当相应的中断源使能并发生时,中断标志位将自动置当相应的中断源使能并发生时,中断标志位将自动置1,然后程序跳往中断服务程序的入口地址执行中断服务程序。然
15、后程序跳往中断服务程序的入口地址执行中断服务程序。待中断服务程序处理完毕后,由硬件清除中断标志位待中断服务程序处理完毕后,由硬件清除中断标志位 l 中断服务程序的入口地址即中断向量,中断服务程序的入口地址即中断向量,CC2530的的18个中个中断源对应了断源对应了18个中断向量,中断向量定义在头文件个中断向量,中断向量定义在头文件“ioCC2530.h”中中 13-1313 -2.中断优先级中断优先级 l 中断优先级将决定中断响应的先后顺序,在中断优先级将决定中断响应的先后顺序,在CC2530中分为六中分为六个中断优先组,即个中断优先组,即IPG0IPG5,每一组中断优先组中有三个,每一组中断
16、优先组中有三个中断源中断源 组组中断中断IPG0RFERRRFDMAIPG1ADCT1P2INTIPG2URX0T2UTX0IPG3URX1T3UTX1IPG4ENCT4P1INTIPG5STP0INTWDT142.中断优先级中断优先级 中断优先组的优先级设定由寄存器中断优先组的优先级设定由寄存器IP0和和IP1来设置。来设置。CC2530的优的优先级有先级有4级,即级,即03级,其中级,其中0级的优先级最低,级的优先级最低,3级的优先级最高。级的优先级最高。IP1_XIP0_X优先级优先级000(优先级别最低)(优先级别最低)011102113(优先级别最高)(优先级别最高)l 其中其中X为
17、六个中断优先组为六个中断优先组IPG0IPG5中的任何一个中的任何一个。设置设置IPG0优先级最高优先级最高IP1_IPG0=1;IP0_IPG0=1;15-1515 -2.中断优先级中断优先级 l 如果同时收到相同优先级或同一优先级组中的中如果同时收到相同优先级或同一优先级组中的中断请求时,将采用轮流检测顺序来判断中断优先断请求时,将采用轮流检测顺序来判断中断优先级别的响应级别的响应 162.中断优先级中断优先级 中断向量编号中断向量编号中断名称中断名称优先级排序优先级排序0RFERR轮流探测顺序轮流探测顺序为自上向下优为自上向下优先级依次降低先级依次降低16RF8DMA1ADC9T12UR
18、X010T23URX111T34ENC12T45ST13P0INT6P2INT7UTX014UTX115P1INT17WDT例如:在中断优先级组例如:在中断优先级组IPG0中的中断中的中断RFERR、RF和和DMA的中断优先级是相的中断优先级是相同的,如果同时使用这三个同的,如果同时使用这三个中断,就需要使用轮流探测中断,就需要使用轮流探测顺序来判断哪一优先级最高。顺序来判断哪一优先级最高。由轮流探测顺序表查得由轮流探测顺序表查得RFERR中断优先级最高,中断优先级最高,RF中断次之,中断次之,DMA中断与中断与其他两个中断相比中断优先其他两个中断相比中断优先级最低级最低 173.中断处理过程
19、中断处理过程 l 中断发生时,中断发生时,CC2530硬件自动完成以下处理:硬件自动完成以下处理:u 中断申请:中断源向中断申请:中断源向CPU发出中断请求信号(中断申请一般需要在程发出中断请求信号(中断申请一般需要在程序初始化中配置相应的中断寄存器开启中断)序初始化中配置相应的中断寄存器开启中断)u 中断响应:中断响应:CPU检测中断申请,把主程序中断的地址保存到堆栈,转检测中断申请,把主程序中断的地址保存到堆栈,转入中断向量入口地址入中断向量入口地址 u 中断处理:按照中断向量中设定好的地址,转入相应的中断服务程序中断处理:按照中断向量中设定好的地址,转入相应的中断服务程序 u 中断返回:
20、中断服务程序执行完毕后,中断返回:中断服务程序执行完毕后,CPU执行中断返回指令,把堆执行中断返回指令,把堆栈中保存的数据从堆栈弹出,返回原来程序栈中保存的数据从堆栈弹出,返回原来程序 184.中断编程中断编程 l 中断编程的一般过程如下中断编程的一般过程如下:l 中断设置:根据外设的不同,具体的设置是不同的,一般中断设置:根据外设的不同,具体的设置是不同的,一般至少包含启用中断至少包含启用中断 l 中断函数编写;这是中断编程的主要工作,需要注意的是,中断函数编写;这是中断编程的主要工作,需要注意的是,中断函数尽可能的减少耗时或不进行耗时操作中断函数尽可能的减少耗时或不进行耗时操作 以以CC2
21、530的外部中断为例:的外部中断为例:P0IFG=0 x00;/P0中断标志清中断标志清0 P0INP&=0X30;/P0.4有上拉、下拉能力有上拉、下拉能力 P0IEN|=0 x30;/P0.4和和P0.5中断使能中断使能 PICTL|=0X01;/P0.4和和P0.5,下降沿触发,下降沿触发 EA=1;/开中断开中断 IEN1|=0X20;/端口端口0中断使能中断使能19-1919 -4.中断编程中断编程 l 中断编程的一般过程如下中断编程的一般过程如下:l CC2530所使用的编译器为所使用的编译器为IAR,在,在IAR编译器中用关键字编译器中用关键字_interrupt来定义一个中断函
22、数。使用来定义一个中断函数。使用#progma vector来提供来提供中断函数的入口地址,并且中断函数没有返回值,没有函数参数中断函数的入口地址,并且中断函数没有返回值,没有函数参数#pragma vector=P0INT_VECTOR_interrupt void P0_ISR(void)/中断程序代码中断程序代码204.中断编程中断编程 l 在中断函数编写中,当程序进入中断服务程序之后,需要执行在中断函数编写中,当程序进入中断服务程序之后,需要执行以下几个步骤以下几个步骤:u 将对应的中断关掉(不是必须的,需要根据具体情况来处理);将对应的中断关掉(不是必须的,需要根据具体情况来处理);
23、u 如果需要判断具体的中断源,则根据中断标志位进行判断(例如所有如果需要判断具体的中断源,则根据中断标志位进行判断(例如所有I/O中中断共用断共用1个中断向量,需要通过中断标志区分是哪个引脚引起的中断)个中断向量,需要通过中断标志区分是哪个引脚引起的中断)u 清中断标志(不是必须的,清中断标志(不是必须的,CC2530中中断发生后由硬件自动清中断标志中中断发生后由硬件自动清中断标志位)位)u 处理中断事件,此过程要尽可能的少耗时处理中断事件,此过程要尽可能的少耗时u 最后如果在第一步中关闭了相应的中断源,需要在退出中断服务程序之前最后如果在第一步中关闭了相应的中断源,需要在退出中断服务程序之前
24、打开对应的中断打开对应的中断#pragma vector=P0INT_VECTOR/中断函数入口地址中断函数入口地址 _interrupt void P0_ISR(void)/定义一个中断函数定义一个中断函数 P0IEN&=0 x30;/关端口关端口P0.4、P0.5中断中断 if(P0IFG0)/判断中断发生判断中断发生 P0IFG=0;/清中断标志清中断标志 /*中断事件的处理中断事件的处理*/.P0IEN|=0 x30;/开中断开中断 21在设置在设置I/O口的中断时必须要将其设置为输入状态,通过外部信号的上升或下降口的中断时必须要将其设置为输入状态,通过外部信号的上升或下降沿触发中断。
25、通用沿触发中断。通用I/O的所有的外部中断共用一个中断向量,根据中断标志位来的所有的外部中断共用一个中断向量,根据中断标志位来判断是哪个引脚发生中断判断是哪个引脚发生中断 通用通用I/O中断寄存器有三类:中断使能寄存器、中断状态标志寄存器和中断中断寄存器有三类:中断使能寄存器、中断状态标志寄存器和中断控制寄存器控制寄存器 中断使能寄存器包括中断使能寄存器包括IENx和和PxIEN(其中(其中x代表代表0、1、2),其功能是使),其功能是使I/O口进行中断使能:口进行中断使能:中断状态标志寄存器包括中断状态标志寄存器包括PxIFG,其功能是当发生中断时,其功能是当发生中断时,I/O口所对应的中断
26、状口所对应的中断状态标志将自动置态标志将自动置1。中断控制寄存器为中断控制寄存器为PICTL,其功能是控制,其功能是控制I/O口的中断触发方式。口的中断触发方式。221.中断使能寄存器中断使能寄存器IENx(其中(其中x为为0,1,2)IENx寄存器包括三个八位寄存器:寄存器包括三个八位寄存器:IEN0、IEN1和和IEN2。位位名称名称复位复位R/W描述描述7EA0R/W禁止所有中断禁止所有中断 0:无中断被确认:无中断被确认1:通过设置对应的使能位将每个中断源分别使能和禁止:通过设置对应的使能位将每个中断源分别使能和禁止6-0R0保留保留5STIE0R/W睡眠定时器中断使能睡眠定时器中断使
27、能0:中断禁止:中断禁止 1:中断使能:中断使能4ENCIE0R/WAES加密加密/解密中断使能解密中断使能0:中断禁止:中断禁止 1:中断使能:中断使能3URX1IE0R/WUSART1 RX中断使能中断使能0:中断禁止:中断禁止 1:中断使能:中断使能2URX0IE0R/WUSART0 RX中断使能中断使能0:中断禁止:中断禁止 1:中断使能:中断使能1ADCIE0R/WADC中断使能中断使能0:中断禁止:中断禁止 1:中断使能:中断使能0RFERRIE0R/WRF TX/RX FIFO中断使能中断使能0:中断禁止:中断禁止 1:中断使能:中断使能23IEN1寄存器的第寄存器的第5位控制位
28、控制P0口的中断,当设置口的中断,当设置IEN1.P0IE时,将设时,将设置置P0端口所有引脚的中断使能,即端口所有引脚的中断使能,即P0.0P0.7引脚全部中断使能引脚全部中断使能位位名称名称复位复位R/W描述描述7:6-00R0保留保留5P0IE0R/W端口端口0中断使能中断使能0:中断禁止:中断禁止 1:中断使能:中断使能4T4IE0R/W定时器定时器4中断使能中断使能0:中断禁止:中断禁止 1:中断使能:中断使能3T3IE0R/W定时器定时器3中断使能中断使能0:中断禁止:中断禁止 1:中断使能:中断使能2T2IE0R/W定时器定时器2中断使能中断使能0:中断禁止:中断禁止 1:中断使
29、能:中断使能1T1IE0R/W定时器定时器1中断使能中断使能0:中断禁止:中断禁止 1:中断使能:中断使能0DMAIE0R/WDMA中断使能中断使能0:中断禁止:中断禁止 1:中断使能:中断使能/端口端口0中断使能中断使能IEN1|=0 x20;24IEN2寄存器的第寄存器的第4位和第位和第1位分别控制位分别控制P1端口和端口和P2端口的中断,当设置端口的中断,当设置IEN2.P1IE和和IEN2.P2IE时,将设置时,将设置P1端口和端口和P2端口所有引脚的中断使能,即端口所有引脚的中断使能,即P1.0P1.7引脚和引脚和P2.0P2.4引脚全部中断使能引脚全部中断使能 位位名称名称复位复位
30、R/W描述描述7:6-00R0保留保留5WDTIE0R/W看门狗定时器中断使能看门狗定时器中断使能0:中断禁止:中断禁止 1:中断使能:中断使能4P1IE0R/W端口端口1中断使能中断使能0:中断禁止:中断禁止 1:中断使能:中断使能3UTX1IE0R/WUSART1 TX中断使能中断使能0:中断禁止:中断禁止 1:中断使能:中断使能2UTX0IE0R/WUSART2 TX中断使能中断使能0:中断禁止:中断禁止 1:中断使能:中断使能1P2IE0R/W端口端口2中断使能中断使能0:中断禁止:中断禁止 1:中断使能:中断使能0RFIE0R/WRF一般中断使能一般中断使能0:中断禁止:中断禁止 1
31、:中断使能:中断使能/端口端口1中断使能中断使能IEN2|=0 x10;/端口端口0中断使能中断使能IEN2|=0 x02;254.4.2 通用通用I/O中断中断中断使能寄存器中断使能寄存器PxIEN(其中(其中x为为0,1,2)PxIEN寄存器是设置端口的某一个引脚中断使能寄存器是设置端口的某一个引脚中断使能 以以P0IEN为例讲解为例讲解:位位名称名称复位复位R/W描述描述7:0P0IEN7:00 x00R/W端口端口0 P0.7P0.0中断使能中断使能0:中断禁止:中断禁止1:中断使能:中断使能/P0.4、P0.5中断使能中断使能P0IEN|=0 x30;264.4.2 通用通用I/O中
32、断中断 中断状态标志寄存器中断状态标志寄存器PxIFG(其中(其中x为为0,1,2)PxIFG寄存器是中断状态标志寄存器,由于寄存器是中断状态标志寄存器,由于CC2530的外部中断共用一个的外部中断共用一个中断向量,因此需要判断是哪个引脚发生中断,通过判断中断向量,因此需要判断是哪个引脚发生中断,通过判断PxIFG寄存寄存中的中断状态标志位可以判断哪个引脚发生中断。中的中断状态标志位可以判断哪个引脚发生中断。PxIFG寄存器有三寄存器有三个,分别是个,分别是P0IFG、P1IFG和和P2IFG 以以P0IFG为例讲解为例讲解:/判断端口判断端口0是否有中断标志发生是否有中断标志发生if(P0I
33、FG0).位位名称名称复位复位R/W描述描述7:0P0IF7:00 x00R/W端口端口0 P0.7P0.0中断状态标志中断状态标志0:未发生中断:未发生中断 1:发生中断:发生中断274.4.2 通用通用I/O中断中断 中断状态标志寄存器中断状态标志寄存器IRCONP0IF=1;/标志位为标志位为1,端口,端口P0有中有中断,具体是断,具体是P0的哪个引脚引起的的哪个引脚引起的还需要通过还需要通过P0IFG来判断来判断284.4.2 通用通用I/O中断中断 中断状态标志寄存器中断状态标志寄存器IRCON2P1IF=1;/标志位为标志位为1,端口,端口P1有中有中断,具体是断,具体是P1的哪个
34、引脚引起的的哪个引脚引起的还需要通过还需要通过P1IFG来判断来判断P2IF=1;/标志位为标志位为1,端口,端口P2有中有中断,具体是断,具体是P2的哪个引脚引起的的哪个引脚引起的还需要通过还需要通过P2IFG来判断来判断294.4.2 通用通用I/O中断中断 中断控制寄存器中断控制寄存器PICTL(其中(其中x为为0,1,2)设置设置中断触发方式中断触发方式:分为输入的上升沿触发和输入的下降沿触发。分为输入的上升沿触发和输入的下降沿触发。位位名称名称复位复位R/W描述描述7PADSC00R0控制控制I/O引脚在输出模式下的驱动能力,选择输出驱动能力来补偿引脚引脚在输出模式下的驱动能力,选择
35、输出驱动能力来补偿引脚DVDD的低的低I/O电压(为了确保在较低的电压下的驱动能力和较高电压下电压(为了确保在较低的电压下的驱动能力和较高电压下的驱动能力相同)。的驱动能力相同)。0:最小驱动能力增强,:最小驱动能力增强,DVDD1/2等于或大于等于或大于2.6V1:最大驱动能力增强,:最大驱动能力增强,DVDD1/2小于小于2.6V6:4-000R0保留保留3P2ICON0R/W端口端口2的的P2.4P2.0输入模式下的中断配置,该位为所有端口输入模式下的中断配置,该位为所有端口2的输入的输入P2.4P2.0选择中断请求条件选择中断请求条件0:输入的上升沿引起中断:输入的上升沿引起中断 1:
36、输入的下降沿引起中断:输入的下降沿引起中断2P1ICONH0R/W端口端口1的的P1.7P1.4输入模式下的中断配置,该位为所有端口输入模式下的中断配置,该位为所有端口1的输入的输入P1.7P1.4选择中断请求条件选择中断请求条件0:输入的上升沿引起中断:输入的上升沿引起中断1:输入的下降沿引起中断:输入的下降沿引起中断1P1ICONL0R/W端口端口1的的P1.4P1.0输入模式下的中断配置,该位为所有端口输入模式下的中断配置,该位为所有端口1的输入的输入P1.4P1.0选择中断请求条件选择中断请求条件0:输入的上升沿引起中断:输入的上升沿引起中断1:输入的下降沿引起中断:输入的下降沿引起中
37、断0P0ICON0R/W端口端口0的的P0.7P0.0输入模式下的中断配置,该位为所有端口输入模式下的中断配置,该位为所有端口0的输入的输入P0.7P0.0选择中断请求条件选择中断请求条件0:输入的上升沿引起中断:输入的上升沿引起中断1:输入的下降沿引起中断:输入的下降沿引起中断/P0.4和和P0.5为下降沿触发中断为下降沿触发中断PICTL|=0 x01;30-3030 -4.4.2 通用通用I/O中断中断 中断配置中断配置 为了使能任一中断,应该采取以下步骤:为了使能任一中断,应该采取以下步骤:l设置需要发生中断的设置需要发生中断的I/O口为输入方式。口为输入方式。l清除中断标志,即将需要
38、设置中断的引脚所对应的寄存器清除中断标志,即将需要设置中断的引脚所对应的寄存器PxIFG状态标志位置状态标志位置0。l设置具体的设置具体的I/O引脚中断使能,即设置中断的引脚所对应的寄存器引脚中断使能,即设置中断的引脚所对应的寄存器PxIEN的中断使能位的中断使能位为为1。l设置设置I/O口的中断触发方式。口的中断触发方式。l设置寄存器设置寄存器IEN1和和IEN2中对应引脚的端口的中断使能位为中对应引脚的端口的中断使能位为1。l设置设置IEN0中的中的EA位为位为1使能全局中断。使能全局中断。l编写中断服务程序。编写中断服务程序。31 通过按键触发外部中断的编程。要求:要求:当当S1键按下时
39、,点亮键按下时,点亮P1_0上的灯上的灯(1)占用系统硬件资源:)占用系统硬件资源:P0_4;(2)当当S1断开时断开时P0_4为高电平,接通时为高电平,接通时P0_4为低电平;为低电平;(3)当当S1键按下,键按下,P0_4管脚上出现一个高电平转变为低电平管脚上出现一个高电平转变为低电平(下降沿)的信号,(下降沿)的信号,当当S1键松开时,会有个上升沿的信号键松开时,会有个上升沿的信号。32上图上图P0_4在在cc2530的中断控制器原理图中所占据的信号的中断控制器原理图中所占据的信号通路截图,初始化的目标通路截图,初始化的目标(void s1_init(void))时:时:第第1步,步,设
40、置设置P0_4为普通输入方式为普通输入方式:P0SEL&=(14);第第2步,步,清除清除中断标志位(图中不是中断标志位(图中不是“开关开关”的位)的位)P0IFG&=(14);P0IF=0X0;第第3步,把步,把P0_4中断通路上的开关合上中断通路上的开关合上 P0IEN|=14;P0IE=1;PICTL|=1;EA=1;合上总开关合上总开关(这一步也可以放在其他的地方这一步也可以放在其他的地方)这里能出现信号这里能出现信号“1”按下按下P0_4上的按键时上的按键时33#pragma vector=P0INT_VECTOR/指定中断向量指定中断向量_interrupt void s1_isr
41、(void)if(P0IFG&(14)delay(10);/延时去抖延时去抖?见黑板见黑板 if(P0_4=0)/按键是否确定被按下按键是否确定被按下 P1_0=0;/点亮灯点亮灯delay(800)/保持点亮一段时间保持点亮一段时间 P0IFG&=(14);/中断标志不能自动清除,必须中断标志不能自动清除,必须 由手工清除由手工清除 P0IF=0;/先清除先清除软软的标志,再清除硬的标志的标志,再清除硬的标志34 本次课程先讲述了中断的概念,接下来又讲述了本次课程先讲述了中断的概念,接下来又讲述了cc2530cc2530中断的原理中断的原理,最后以按键实例讲述了最后以按键实例讲述了CC2530CC2530中中断编程的步骤。中断编程的步骤重点要理解中断原断编程的步骤。中断编程的步骤重点要理解中断原理里面的几个图。理里面的几个图。35尝试把查询方式从从串口接收数据改写成中断方式尝试把查询方式从从串口接收数据改写成中断方式从串口接收数据。从串口接收数据。36CC2530数据手册(中英版均可以)数据手册(中英版均可以)CC2530定时器原理与编程定时器原理与编程