TI中文支持网
TI专业的中文技术问题搜集分享网站

求助:MSP430F2132的P2IES设置遇到的怪事?

使用F2132与CC1101,前者用到了P2.0作GDO0、P2.1作GDO2,要求收到同步字时P2.1置高

//====================== GDO2的外部中断设置 ====================
void GDO2_ISR(void)
{
  TI_CC_GDO2_PxSEL &=~TI_CC_GDO2_PIN;     // 普通IO
  TI_CC_GDO2_PxDIR &=~TI_CC_GDO2_PIN;      // input
  TI_CC_GDO2_PxREN |= TI_CC_GDO2_PIN;       //
  TI_CC_GDO2_PxOUT &=~TI_CC_GDO2_PIN;    // Set P2.1 as pull-Down resistance   TI_CC_GDO2_PxIES &=~TI_CC_GDO2_PIN;      // P2.1 Lo->Hi edge
  TI_CC_GDO2_PxIFG &=~TI_CC_GDO2_PIN;      // P2.1 IFG cleared
  TI_CC_GDO2_PxIE  |= TI_CC_GDO2_PIN;          // P2.1 interrupt enabled,GDO2

}

上面代码的第5行(P2IES &=~BIT1;)则接收端会出现连接2次RF数据接收,且检查发现是发送端已经发送了3次(收到的是第1次和第3次);

而如果修改为(P2IES &= BIT1;)则接收端会正确地只收到1次RF数据。

后面的写法,有什么其它的问题呢?

 

Charles Wu:

430对IO的操作很少会用第二种写法,一般用以下两种

给BITx置位: PxIES |= BITx

给BITx复位:PxIES &= ~BITx。

第二种写法的结果是P2IES 清除其他BIT(BIT0,BIT2~BIT7)的各位数据,为0。保留BIT1之前的数据,应该和你的设计本意不同吧。

而用第一种写法只接受到2次RF数据的原因,估计是RF发送的速度过快,你的GDO2的中断处理函数处理速度不够,所有漏掉了第二次的数据。

赞(0)
未经允许不得转载:TI中文支持网 » 求助:MSP430F2132的P2IES设置遇到的怪事?
分享到: 更多 (0)