宝剑锋从磨砺出,梅花香自苦寒来。这篇文章主要讲述#导入Word文档图片# CC2530 外部中断配置说明相关的知识,希望能为你提供帮助。
第一章硬件原理图分析?
第二章配置按键中断步骤?
第三章按键中断代码配置示例?
第四章 CC2530的中断系统说明? CC2530具有18个中断源,每个中断源都由各自的一系列特殊功能寄存器来进行控制。可以编程设置相关特殊功能寄存器,设置18个中断源的优先级以及使能中断申请响应等。我们常用的中断源有下面几个:
#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;
//上拉
【#导入Word文档图片# CC2530 外部中断配置说明】 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的P0、P1和P2端口中的每个引脚都具有外部中断输入功能,要使某些引脚具有外部中断功能,需要对IENx寄存器、PxIEN寄存器和PICTL寄存器进行适当的设置。除了各个中断源都有自己的中断使能开关之外,中断系统还有一个总开关,可以同“EA = 1;
”来打开总中断。
<
1>
在每一个中断服务函数之前,都要加上一句起始语句:?
#pragma vector = <
中断向量>
?
<
中断向量>
表示接下来要写的中断服务函数是为那个中断源服务的,该 语句有两种写法:?
#pragma vector = 0x7B 或者#pragma vector = P1INT_VECTOR?
前者是中断向量的入口地址,后者是头文件“ioCC2530.h”中的宏定义。?
<
2>
_ _interrupt关键字表示该函数是一个中断服务函数,<
函数名称>
可以 自定义,函数体不能带有参数,也不能有返回值。?
P0、P1和P2端口分别使用P0IF、P1IF和P2IF作为中断标志位,任何一个端口组上的引脚产生外部中断时,都会将对应端口组的中断标志自动置位。注意,外部中断标志必须在中断服务函数中手工清除,否则CPU会反复进入中断。 端口状态标志寄存器P0IFG、P1IGF和P2IFG,分别对应3个端口中各引脚的中断触发状态,当某引脚发生外部中断触发时,对应的标志位会自动置位,这个标志同样需要手工清除。
推荐阅读
- 警告(使用未定义的常量register_nav_menu-假定为’register_nav_menu'(这将在以后的PHP版本中引发错误))
- Kali与编程(如何快速安装Kali Linux安全系统())
- oracle拨云见日第4篇之脚本安装11g
- 刨析《C语言》进阶付费知识完结
- #Word文档导入#Impala自动同步Hive元数据
- ceph简介及简单安装步骤
- Js遍历数组总结
- CSS样式优先级
- JS中this的指向