Zigbee|CC2530定时器3通道1输入捕获中断

【Zigbee|CC2530定时器3通道1输入捕获中断】 CC2530定时器3通道1输入捕获中断
使用的是tim3的通道1的输入捕获P1_7口。
//GPIO配置成复用功能,同时设置P1_7为输入。

//Capture.c static void Init_CaptureGPIO(void) { P1SEL |= (1<<7); //复用功能 P1DIR &= ~(1<<7); //设置 GPIO 口为输入 P1_7 = 1; PERCFG |= (1<<5); //定时器3的备用位置2,必须设置 P2SEL|= (1<<5); //定时器3优先 }static void Init_Timer3(void) { T3CTL = 0X00; //T3溢出中断屏蔽 T3CTL |= (1<<7); //16分频 - 1MHz T3CTL |= (1<<2); //清除计数器 T3CTL |= (1<<3); //溢出中断使能 T3CTL |= (1<<4); //启动定时器 T3T3CCTL1 &= ~(1<<2); //捕获模式 T3CCTL1 |= 0X03; //两个下降沿都捕获 T3CCTL1 |= (1<<6); //使能通道1中断IRCON = 0; //清除中断标志T3IE = 1; //使能定时器3中断 }void Init_Timer3Caputure(void) { Init_CaptureGPIO(); Init_Timer3(); }//main.c #pragma vector = T3_VECTOR//定时器3 __interrupt void T3_ISR(void) { unsigned char a; if(TIMIF & (~0xFB)) //边沿触发中断 { a = T3CC1; if(a > 18 && a < 40) { rec1[signle++] = T3CC1; setFlag = 1; } T3CC1 = 0; IRCON = 0x00; //清中断标志,也可由硬件自动完成 }if(TIMIF & (~0xFE)) //溢出中断 { if(setFlag) { signle = 0; setFlag = 0; } IRCON = 0x00; //清中断标志,也可由硬件自动完成 } }




    推荐阅读