第一章硬件原理图分析

#导入Word文档图片# CC2530 外部中断配置说明_引脚

第二章配置按键中断步骤

#导入Word文档图片# CC2530 外部中断配置说明_引脚_02

#导入Word文档图片# CC2530 外部中断配置说明_引脚_03

#导入Word文档图片# CC2530 外部中断配置说明_寄存器_04

#导入Word文档图片# CC2530 外部中断配置说明_寄存器_05

#导入Word文档图片# CC2530 外部中断配置说明_寄存器_06

#导入Word文档图片# CC2530 外部中断配置说明_引脚_07

#导入Word文档图片# CC2530 外部中断配置说明_寄存器_08

#导入Word文档图片# CC2530 外部中断配置说明_引脚_09

#导入Word文档图片# CC2530 外部中断配置说明_外部中断_10

#导入Word文档图片# CC2530 外部中断配置说明_外部中断_11

#导入Word文档图片# CC2530 外部中断配置说明_寄存器_12

第三章按键中断代码配置示例


#include <ioCC2530.h>


//定义LED灯的端口

#define LED1 P1_2

#define LED2 P1_3


//定义KEY按键的端口

#define KEY1 P1_0 //定义按键为P1_0口控制

#define KEY2 P1_1 //定义按键为P1_1口控制


/*

函数功能:LED灯IO口初始化

硬件连接:LED1-->P1_2 , LED2-->P1_3

*/

void LED_Init(void)

{

P1DIR |=0x3<<2; //配置P1_2、P1_3为输出模式

LED1 = 1;

LED2 = 1;

}


/*

函数功能:初始化按键为中断模式

硬件连接:KEY1-->P1_0 KEY2-->P1_1

*/

void KEY_InterruptInit(void)

{

P1DIR&=~(0x3<<0); //配置P1_0、P1_1为输入模式

P1INP|= 0x3<<0; //上拉

P1IEN|= 0x3<<0; //中断使能

PICTL|= 0x1<<1; //下降沿触发(P1口所有端口都共用一个配置)

IEN2 |= 0x1<<4; //端口P1中断使能

P1IFG&= ~(0x3<<0);//清除中断标志位

EA = 1; //使能总中断

}



void delay10ms(void) //误差 0us

{

unsigned char a,b,c;

for(c=193;c>0;c--)

for(b=118;b>0;b--)

for(a=2;a>0;a--);

}


/*

函数功能:P1端口中断处理函数

*/

#pragma vector = P1INT_VECTOR //声明P1口中断服务函数的位置

__interrupt void P1_Interrupt(void) //中断服务函数的名字的可以随意命名

{

if(P1IFG&1<<0) //判断按键1中断

{

delay10ms();

if(!KEY1)

{

LED1 = !LED1;

}

P1IFG&=~(1<<0); //清中断状态

}


if(P1IFG&1<<1) //判断按键2中断

{

delay10ms();

if(!KEY2)

{

LED2 = !LED2;

}

P1IFG&=~(1<<1); //清中断状态

}

P1IF = 0; //清P1口中断标志

}



/*主函数*/

void main(void)

{

LED_Init();//初始化LED灯控制IO口

KEY_InterruptInit();//按键初始化

while(1)

{


}

}

第四章 CC2530的中断系统说明

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

#导入Word文档图片# CC2530 外部中断配置说明_外部中断_13

  • CC2530的中断处理函数编写方法 中断服务函数与一般自定义函数不同,有特定的书写格式
    <1> 在每一个中断服务函数之前,都要加上一句起始语句
    #pragma vector = <中断向量>
    <中断向量>表示接下来要写的中断服务函数是为那个中断源服务的,该 语句有两种写法:
    #pragma vector = 0x7B 或者 #pragma vector = P1INT_VECTOR
    前者是中断向量的入口地址,后者是头文件“ioCC2530.h”中的宏定义。
    <2> _ _interrupt关键字表示该函数是一个中断服务函数,<函数名称>可以 自定义,函数体不能带有参数,也不能有返回值
  • CC2530的外部中断

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

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