This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

#CC2540# 我把P1_7作外部中断,采集两个上升沿之间的时间,每次采集到的数据值都相差较大,不知道为何?



这两次上升沿之前大约是90us(因为会随环境变化而变化,所以要采集)。

timer1设定: 跑 Tick frequency/8,Free-running,Tick freq我没定,应该是32M吧,所以每个最小单位0.25us。

外部中断设定:把p1_7设成上升沿外部中断,第一来时,启动timer1,第二次来时,停止timer1,读出来counter值。

 

附上部分代码: 

#pragma vector=P1INT_VECTOR

__interrupt void P1INT_ISR(void)

 {  

 uint8 value;

  P1IFG = 0;

 P1IF = 0;

 if (triggers == 0)  

{   

///start timer 1   

COUNTER_TxCNTL = 0;  

 COUNTER_TxCTL &= ~((3<<0)|(3<<2));   

COUNTER_TxCTL |= (COUNTER_TxCTLDIVBIT | COUNTER_TxCTLMODEBIT0);  

 triggers ++;

 }  

else  

{   

P1IEN = 0;

IEN2 &= ~DATA_PxENBIT;     

dataHeadT = COUNTER_TxCNTL;  

 value = COUNTER_TxCNTH;   

dataHeadT += (value<<8);

  ///halt   

COUNTER_TxCTL &= ~(3<<0);  

 triggers = 0;

 

启动外部中断是这样的,

 P1IFG = 0;

 P1IF = 0;

 PICTL &= ~DATA_PxICTLBIT;  

P1IEN |= DATA_Px;  

IEN2 |= DATA_PxENBIT;

 IEN0 |= DATA_PxEN0BIT;

 

由于是第一次使用,搞了很久,不知道问题出在哪里?TI FAE一定要帮我这个忙了!十分感谢,万分感激!!!