将读函数改成下面的就正常了
u8 SPIReceiveOneByte(void)
{
u16 i=0;
unsigned char ucBitCounter=0;
u16 unSPIRecBuffer;
ucBitCounter=SPI1->DR;//接收发送无用字节前 读一次DR 清除RXNE标识 while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);
SPI_I2S_SendData(SPI1, 0x00);
for(i=500;i>0;i--);
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);
SPI_I2S_SendData(SPI1, 0x00);
while((SPI1->SR &SPI_I2S_FLAG_RXNE)==RESET);
return (SPI1->DR);
}
那如果我一直没有读DR的话 头一次读出来的应该是最前面的8个clk移送的数据吧?
|