您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 无线传感器网络实验教程二---中断实验
无线传感器网络实验教程中断实验主讲教师:柯宗武2012年12月Copyright:柯宗武本章内容实验内容:利用外部中断方式编写按键驱动跑马灯程序使用定时器来延时CC2530中断系统介绍与中断相关的SFR介绍中断程序编写方法Copyright:柯宗武CC2530中断系统介绍CPU具有18个中断源,每个源在中断标志SFR寄存器中具有自己的请求标志位。每个中断源可以独立地使能和禁止,中断具有不同的优先级。每个中断源可以通过中断使能寄存器IEN0,IEN1和IEN2分别进行使能和禁止。Copyright:柯宗武CC2530中断系统介绍为了使能任何一个中断,必须采取以下的步骤:清除中断标志在外设SFR寄存器中设置各自的中断使能位在IEN0/IEN1或IEN2寄存器中设置各自相应的中断使能位设置寄存器IEN0中的全局中断使能位EA在相应中断的中断矢量中开始中断服务程序Copyright:柯宗武PICTL(P口中断控制寄存器)位号位名复位值可操作性功能描述7-0读预留6PADSC0读/写输出驱动能力选择0最小驱动能力,1最大驱动能力5P2IEN0读/写P2(0-4)中断使能位:0关中断,1开中断4P0IENH0读/写P0(4-7)中断使能位:0关中断,1开中断3P0IENL0读/写P0(0-3)中断使能位:0关中断,1开中断2P2ICON0读/写P2(0-4)中断配置0上升沿触发,1下降沿触发1P1ICON0读/写P1(0-7)中断配置0上升沿触发,1下降沿触发0P0ICON0读/写P0(0-7)中断配置0上升沿触发,1下降沿触发Copyright:柯宗武例:P0_6作为外部中断的配置1.清除中断标志P0IFG=0P0IFG&=~0x40;CC2530用户手册Copyright:柯宗武例:P0_6作为外部中断的配置2.在外设SFR寄存器中设置各自的中断使能位P0IEN|=0X4001000000位号位名复位值可操作性功能描述7P0_7IEN0读/写P07中断掩码:0关中断,1开中断6P0_6IEN0读/写P06中断掩码:0关中断,1开中断5P0_5IEN0读/写P05中断掩码:0关中断,1开中断4P0_4IEN0读/写P04中断掩码:0关中断,1开中断3P0_3IEN0读/写P03中断掩码:0关中断,1开中断2P0_2IEN0读/写P02中断掩码:0关中断,1开中断1P0_1IEN0读/写P01中断掩码:0关中断,1开中断0P0_0IEN0读/写P00中断掩码:0关中断,1开中断Copyright:柯宗武例:P0_6作为外部中断的配置3.在IEN0/IEN1或IEN2寄存器中设置各自相应的中断使能位IEN1|=0X20;//P0IE=1;开启P0口中断Copyright:柯宗武Copyright:柯宗武P0口中断被挂起,则该位置1Copyright:柯宗武例:P0_6作为外部中断的配置设置寄存器IEN0中的全局中断使能位EAEA=1Copyright:柯宗武Copyright:柯宗武例:P0_6作为外部中断的配置5.在相应中断的中断矢量中开始中断服务程序#pragmavector=P1INT_VECTOR__interruptvoidP1_ISR(void){......}Copyright:柯宗武预处理指令#pragma#Pragma的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。常用来发出明确的指令来生成和优化编译。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。Copyright:柯宗武#pragmavector在IAR编译器里,用#pragmavector来提供中断函数的入口地址。用关键字来__interrupt来定义一个中断函数。格式:#pragmavector=中断入口地址__interruptvoid中断处理函数名(参数列表)CC2530中断入口地址(也称为中断向量)在哪个头文件中定义?这样书写的函数叫什么类型的函数?Copyright:柯宗武本征函数本征函数(内在函数)编译器自己编写的能够直接访问处理器底层特征的函数。使用IAR中的本征函数通常需要包含头文件intrinsics.h例如:__disable_interrupt();//插入CLI指令,也可以用_CLI();__enable_interrupt();//插入SEI指令,也可以用_SEI();Copyright:柯宗武
本文标题:无线传感器网络实验教程二---中断实验
链接地址:https://www.777doc.com/doc-4262594 .html