u8 SPIx_ReadWriteByte(u8 TxData)
{
u8 retry=0;
while((SPI1->SR&1<<1)==0)//等待发送区空
{
retry++;
if(retry>200)return 0;
}
SPI1->DR=TxData; //发送一个byte
retry=0;
while((SPI1->SR&1<<0)==0) //等待接收完一个byte
{
retry++;
if(retry>200)return 0;
}
r eturn SPI1->DR; //返回收到的数据
}
今天学习到SPI实验了,看到SPI读写函数有点不解,为什么读和写能写在一个函数中啊?
当我读数据的时候要先发送一个数据么?
当我写完数据还要读一个数据么?
请大家指点下。谢谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
u8 SPI2_ReadWriteByte(u8 TxData)
{
while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);
SPI_SendData8(SPI2,TxData);
while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET);
return SPI_ReceiveData8(SPI2);
}
这个函数,我可以理解为,在MISO上给从机发送了一个指令,从机接收了这个指令后,反馈回来数据???恳请原子哥解答。回复【29楼】正点原子:
---------------------------------
一周热门 更多>