zigbee外部中断
来源:互联网 发布:汽车改装设计软件 编辑:程序博客网 时间:2024/04/29 04:04
今天开始学习买了好久的zigbee开发板。跟着送的教材学习,发现教材有些许错误,就是那本《zigbee实战演练》。
外部中断那个实验,教材只是简单介绍了一下寄存器设置。我看了一下cc2530的手册,写下了这个程序。
首先外部中断的设置分为这几步骤(直接上代码了):
① P0IEN |= 0x30; //P0_4设为中断
②PICTL |= 0x01; //P0口下降沿触发
③IEN1 |= 0x20; //P0口中断允许
④P0IFG = 0x00; //清除状态位,中断产生,相应比特位为置位
⑤EA = 1; //开总中断
设置没得说,看到中断处理函数,教材就写的不是特别清楚了。
教材的中断处理函数:
#pragma vector = P0INT_VECTOR //格式:#pragma vector = 中断向量,紧接着是中断处理程序
__interrupt void P0_ISR(void)
{
Delayms(10); //去除抖动
LED1=~LED1; //改变LED1状态
P0IFG = 0; //清中断标志
P0IF = 0; //清中断标志
}
学过51单片都知道,常用51有两个外部中断,对应两个中断向量,可以分别写两个中断函数。而zigbee有18个外部中断,P0口只是其中之一,所以P0口只能写一个中断函数,那么如果把P0的每个引脚都作为外部中断,怎么管理这些中断呢,我从数据手册的中断开关图,写了下面这个函数,有可能理解有些偏颇,请大家指教。如果P0产生中断,就会进入中断函数,我们在中断函数里可以通过判断P0IFG来确定是哪个引脚产生的中断。
我写的中断处理函数:
#pragma vector = P0INT_VECTOR
__interrupt void P0_ISR(void)
{
if(P0IFG >>4 & 0x01)
{
led2 = ~led2;
}
if(P0IFG >>5 & 0x01)
{
led1 = ~led1;
}
P0IFG = 0;
P0IF = 0;
}
- zigbee外部中断
- 1.3 zigbee基础(外部中断)
- zigbee基础应用(三)外部中断
- zigbee学习笔记3----cc2530 外部中断实验
- zigbee学习笔记3----cc2530 外部中断实验
- ZigBee TI ZStack CC2530 3.11 IO口02-外部中断
- Zigbee之旅(三):几个重要的CC2430基础实验——外部中断
- 外部中断
- 外部中断
- 外部中断
- 外部中断
- 外部中断
- 外部中断
- 外部中断
- 外部中断
- 外部中断
- 外部中断
- 外部中断
- 第2堂作业
- 在virtualbox中安装ubuntu server 12.04,搭建嵌入式开发环境
- 在腾讯开发QQ IM 的工作体验
- ARM初始化
- uva 10163 - Storage Keepers 每组最多选一个的分组背包
- zigbee外部中断
- 课堂作业1
- 6 I/O复用:select and poll函数
- 为ubuntu菜鸟准备的几个非常有用的几个网站
- ListView的使用
- 课堂作业2
- Uva-Live Archive3902-Network
- js实现获取文件的全路径
- 回复“写给24岁的自己”