CC2530外部中断相关

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ÉèÖÃΪÖжϷ½Ê½  
  PICTL |= 0X02;     //ϽµÑØ´¥·¢  
  EA = 1;  
  IEN2 |= 0x10;  
  P1IFG  = 0;  
}




#pragma vector = P1INT_VECTOR      //ÖжϷþÎñ×Ó³ÌÐò
 __interrupt void P1_ISR(void)            
 {
   
   
   if(P1IFG>0)  
    {  
     
      if(P1IFG & 0x01)  
      {  
         Uart0Send(0xDD);  
      }  
      P1IFG = 0;  
    }  
    P1IF = 0;  
 }

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值