虽然是去年的帖子了,我还是回复一下吧,昨天我也遇到了这样的问题,调试了两天找出来了
stm32+cc1101 与 stm32+cc1101之间通信没有问题,任何一方都可作为发送接收方
后来我将程序移植到MSP430F149上面,然后问题来了……
STM32+CC1101作为发送方 MSP430+CC1101作为接收方 可以正常接收
然而MSP430+CC1101作为发送方 STM32+CC1101作为接收方时 接收到的数据是乱码 CRC校验通不过
问题出在这里了
定义GDO0时 是这样定义的
#define GDO0 P2IN & BIT6 //读电平 P2.6
在发送数据包函数halRfSendPacket()是这样使用的
// Wait for GDO0 to be set -> sync transmitted
while (!GDO0);
// Wait for GDO0 to be cleared -> end of packet
while (GDO0);
程序并不像我们想象的那样运行,#define 只是简单的字符替换 while (!GDO0); 相当于
while (! P2IN & BIT6); “!”运算符优先级高于“&”运算符,所以,结果你懂得……
所以在定义GDO0时,要加小括号 #define GDO0 (P2IN & BIT6) //读电平 P2.6
但是楼猪的代码是这样的
// Wait for GDO0 to be set -> sync transmitted
while (!(GDO0)); //此处是没有问题的
// Wait for GDO0 to be cleared -> end of packet
while (GDO0);
//halSpiStrobe(CCxxx0_SFTX);
So,我也不知道楼猪的问题在哪里 |