我目前使用CC2541的Timer3 和Timer4 作为PWM信号的timer,P1,2作为一个外部中断接口,接收外部中断。
目前遇到一个问题,就是当配置完Timer3,Timer4 以及中断接口P1.2后,开始Timer4 和Timer3 时,好像概率的会触发一个P1.2的中断。测试时已经将强制P1.2拉到地,还是莫名的会运行中断处理函数。
请问这是什么原因?下面是我的代码。
P1SEL |= BV(1); //P1.1 for pwm
P1DIR |= BV(1); //P1.1 as output.
// Init Timer4 for PWM
P2SEL |= 0x18; //P2SEL.PRI1P1 and P2SEL.PRI0P1;
PERCFG &= 0xef; //PERCFG.T4CFG, alt 0
T4CC1 = 0x80;
T4CCTL1 = 0x24; //00100100
T4CTL |= 0x60; //01100000 timer start
T4CTL |= 0x04;
P1SEL |= BV(3); //P1.3 for pwm
P1DIR |= BV(3); //P1.3 as output.
// Init Timer3 for PWM
P2SEL |= 0x60; //P2SEL.PRI2P1 , P2SEL.PRI3P1 ;
PERCFG &= 0xdf; //PERCFG.T4CFG, alt 0
T3CC0 = 0x80;
T3CCTL0 = 0x24; //00 100 1 00
T3CTL |= 0x60; //011 0 0 0 00 timer start
T3CTL |= 0x04;
// Set interupt for p1.2
P1SEL &= ~(BV(2)); /* Set pin function to GPIO */
P1DIR &= ~(BV(2)); /* Set pin direction to Input */
P1IEN |= BV(2);
P1IFG &= ~(BV(2));
PICTL &= ~(BV(1)); // set P1 Rising edge
IEN2 |= BV(4) ; // enable P1 interupt
// start PWM
T4CTL |= 0x10;
T3CTL |= 0x10;