zigbee基础实验--GPIO中断操作

电路图

功能

通过按键控制灯的亮灭

介绍

       在执行 CPU 当前程序时,由于系统中出现了某种急需处理的情况,CPU 暂停正在执行的程序,转而去执行另外一段特殊程序来处理出现的紧急事务,处理结束后,CPU 自动返回到原来暂停的程序中去继续执行。 这种程序在执行过程中由于外界的原因而被中间打断的情况,称为中断。
        两个重要的概念:
        <1> 中断服务函数: 内核响应中断后执行的相应处理程序。
        <2> 中断向量:中断服务程序的入口地址。每个中断源都对应一个固定的入口地址。当内核响
应中断请求时,就会暂停当前的程序执行,然后跳转到该入口地址执行代码。

CC2530中断系统

      CC2530 具有 18 个中断源,每个中断源都由各自的一系列特殊功能寄存器来进行控制。可以编程设置相关特殊功能寄存器,设置 18 个中断源的优先级以及使能中断申请响应等。我们常用的中断源有下面几个:

zigbee基础实验--GPIO中断操作_第1张图片

    CC2530 的 P0、P1 和 P2 端口中的每个引脚都具有外部中断输入功能,要使某些引脚具有外部中断功能,需要对 IENx 寄存器、PxIEN 寄存器和 PICTL 寄存器进行适当的设置。 除了各个中断源都有自己的中断使能开关之外,中断系统还有一个总开关,可以用“EA = 1;”来打开总中断。

    P0、P1 和 P2 端口分别使用 P0IF、P1IF 和 P2IF 作为中断标志位,任何一个端口组上的引脚产生外部中断时,都会将对应端口组的中断标志自动置位。注意,外部中断标志必须在中断服务函数中手工清除,否则 CPU 会反复进入中断。 端口状态标志寄存器 P0IFG、P1IGF 和 P2IFG,分别对应 3 个端口中各引脚的中断触发状态,当某引脚发生外部中断触发时,对应的标志位会自动置位,这个标志同样需要手工清除。

zigbee基础实验--GPIO中断操作_第2张图片

代码

#include 

typedef unsigned char uchar;
typedef unsigned int  uint;

#define LED1 P1_0       // P1.0口控制LED1
#define KEY1 P0_1       // P0.1口控制S1


/****************************************************************************
* 名    称: DelayMS()
* 功    能: 以毫秒为单位延时,系统时钟不配置时默认为16M(用示波器测量相当精确)
* 入口参数: msec 延时参数,值越大,延时越久
* 出口参数: 无
****************************************************************************/
void DelayMS(uint msec)
{ 
    uint i,j;
    
    for (i=0; i

 

 

你可能感兴趣的:(zigbee基础实验--GPIO中断操作)