然后又有新问题了,主机发送过来的5个16位数据,帧首是0x3a05,我修改程序后,串口把接受的数组发送过来,结果全是0x3a05。
修改后的程序:
void SPI2_IRQHandler(void)
{
static u16 spi2Recive[5];
static u8 spi2Num;
u8 i;
u16 spi2Temp;
spi2Temp = SPI_I2S_ReceiveData(SPI2);
if(spi2Num == 0)
{
if(spi2Temp == 0x3a05)
{
spi2Num = 1;
spi2Recive[0] = spi2Temp;
// SPI_I2S_SendData(SPI2, spi2Temp);
// printf("\r\nthe first data is: %x", spi2Temp);
}
}
else
{
spi2Recive[spi2Num] = spi2Temp;
spi2Num++;
if(spi2Num > 5)
{
spi2Num = 0;
for(i = 0; i < 5; i++)
printf("\r\nspi2recive[%d]: %x", i, spi2Recive[i]);
// SPI_I2S_SendData(SPI2, 0x3a05);
}
}
// printf("\r\nspirecive: %x", spi2Temp);
printf("\r\nspi2Num: %d", spi2Num);
}
串口法伤过来的数据:
spi2recive[0]: 3a05
spi2recive[1]: 3a05
spi2recive[2]: 3a05
spi2recive[3]: 3a05
spi2recive[4]: 3a05
spi2Num: 0 |