微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > 射频无线通信设计 > CC2530的I/O外部中断

CC2530的I/O外部中断

时间:10-02 整理:3721RD 点击:

CC2530的I/O外部中断


CC2530有18个中断源,这些中断源在手册中如图,


我们一般说的I/O外部中断,一般是指序号 6、13、15外部输入中断,Port x inputs。
通用I/O 引脚设置为输入后,可以用于产生中断。中断可以设置在外部信号的上升或下降沿触发。P0、P1或P2 端口都有中断使能位,对位于IENl-2 寄存器内的端口所有的位都是公共的,如下:
IENI.P0 IE:P0 中断使能
IEN2.PI IE:P1 中断使能
IEN2.P2IE:P2 中断使能
除了这些公共中断使能之外,每个端口的位都有位于SFR 寄存器P0IEN、P1IEN 和P2IEN 的单独的中断使能。即使配置为外设I/O 或通用输出的I/O 引脚使能时都有中断产生。
当中断条件发生在I/O 引脚之一上面,P0-P2 中断标志寄存器P0IFG、P1IFG 或P2IFG 中相应的中断状态标志将设置为1。不管引脚是否设置了它的中断使能位,中断状态标志都被设置。当中断已经执行,中断状态标志被清除,该标志写入0。这个标志必须在清除CPU 端口中断标志(PxIF)之前被清除。
用于中断的SFR 寄存器描述在下一节。寄存器总结如下:
实例:
void InitINT(void)
{
  P1SEL &= ~0x01;  
  P1DIR &= ~0X01;  
  P1IEN |= 0X01;     //P10éè???a?D??·?ê?  
  PICTL |= 0X02;     //???μ??′¥·¢  
  EA = 1;  
  IEN2 |= 0x10;  
  P1IFG  = 0;  
}
#pragma vector = P1INT_VECTOR      //?D??·t??×ó3ìDò
__interrupt void P1_ISR(void)            
{
   if(P1IFG>0)  
    {  
      if(P1IFG & 0x01)  
      {  
         Uart0Send(0xDD);  
      }  
      P1IFG = 0;  
    }  
    P1IF = 0;  
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top