/*!< Loop while DR register in not emplty */
while (SPI_I2S_GetFlagStatus(sFLASH_SPI, SPI_I2S_FLAG_TXE) == RESET);
/*!< Send byte through the SPI1 peripheral */
SPI_I2S_SendData(sFLASH_SPI, byte);
/*!< Wait to receive a byte */
while (SPI_I2S_GetFlagStatus(sFLASH_SPI, SPI_I2S_FLAG_RXNE) == RESET);
/*!< Return the byte read from the SPI bus */
return SPI_I2S_ReceiveData(sFLASH_SPI);
一般别的单片机只要完成 while (SPI_I2S_GetFlagStatus(sFLASH_SPI, SPI_I2S_FLAG_TXE) == RESET); 读取这个就可以读取和再次发送数据了,
即 发送数据->发送完毕->读取接收数据。
STM32则要这样做 发送数据->发送完毕->接收完毕->读取接收数据。
多了一个接收状态。
我要是用中断的话 这样做呢 开接收数据中断 ->发送数据-> 触发接收完成中断->读取接收数据->再次发送和接收。
|