关于原子SPI程序有一点不懂

2019-07-20 21:02发布

u8 SPI1_ReadWriteByte(u8 TxData)
{                                          
  while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET){}//等待发送区空  
        SPI_I2S_SendData(SPI1, TxData); //通过外设SPIx发送一个byte  数据       
  while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET){} //等待接收完一个byte  
        return SPI_I2S_ReceiveData(SPI1); //返回通过SPIx最近接收的数据        }
中文参考手册里是这么说的
发送缓冲区为空 (TXE)
此标志置 1 时,表示发送缓冲区为空,可以将待发送的下一个数据加载到缓冲区中。对
SPI_DR 寄存器执行写操作时,将清零 TXE 标志。
接收缓冲区非空 (RXNE)
此标志置 1 时,表示接收缓冲区中存在有效的已接收数据。读取 SPI_DR 时,将清零该
标志。

TXE为1的时候不才是发送区空了吗,为什么程序里面是为0的时候为空,RXNE为1的时候才是接受完一个byte,为什么程序里是为0的时候才接受完?




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。