函数实例:
u8 SPI1_ReadWriteByte(u8 TxData)
{
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET){}
SPI_I2S_SendData(SPI1, TxData);
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET){}
return SPI_I2S_ReceiveData(SPI1);
}
函数发送前,先获取SPI_I2S_FLAG_TXE的标记位状态,获取函数:SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE);然后用while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET)进行条件判断;如果标记位是0,表示spi没有发送完成,此时进入while循环判断;如果捕获到标记位是1,表示spi一次数据发送完成,1不等于RESET,程序跳出while循环执行下边的语句:SPI_I2S_SendData(SPI1, TxData); 完成数据的发送。接收过程与发送的实现方法基本一致,只是需要检测判断的标志位不一样,接收判断的标志位是接收区是否为空的标记位。