STM8L+CC1101,在调试CC1101接收程序时,单步调试时程序会卡死在判断是否进入接收中断, 我就改了一下寄存器CC1101_IOCFG0 ,改为0X04时可以通过,但是应该没有能够接收数据,因为判断是错的,就跳出来了,这寄存器应该怎么设置,还是其他什么问题,请大神赐教了,接收函数如下:
void RF_RecvHandler(void)
{
INT8U error=0, i=0, length=0, recv_buffer[65]={ 0 };
CC1101SetTRMode(RX_MODE); // 设置RF芯片接收模式,接收数据
if (0 == CC_IRQ_READ()) // 检测无线模块是否产生接收中断
{
while (CC_IRQ_READ() == 0);
// 数据请零,防止误判断
for (i=0; i<SEND_LENGTH; i++) { recv_buffer[i] = 0; }
// 读取接收到的数据长度和数据内容
length = CC1101RecPacket(recv_buffer);
// 判断数据是否有误,接收到的信号应该为0-9
for (i=0, error=0; i<10; i++)
{
if (recv_buffer[i] != i) { error=1; break; } // 数据出错
}
if ((length==10) && (error==0)) // 数据正确
{
LED0_TOG(); // LED闪烁,用于指示收到正确数据
USART_Send("Receive ok\r\n", 12);
CC1101SendPacket(AckBuffer, ACK_LENGTH, ADDRESS_CHECK);
RecvCnt++;
}
}
} |