SPI读写函数

2019-07-20 20:14发布

u8 SPI2_ReadWriteByte(u8 TxData)
{                                          

  while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET){}
       
        SPI_I2S_SendData(SPI2, TxData);
               
  while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET){}

        return SPI_I2S_ReceiveData(SPI2);
                    
}


void spi2_write(u8 txdata)
{
        while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);
        SPI_I2S_SendData(SPI2, txdata); //í¨1yíaéèSPIx·¢Ëíò»¸öbyte  êy¾Y
}

//spi read function
u8 spi2_read(void)
{
        while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET);
        return (u8)SPI_I2S_ReceiveData(SPI2);
}

分开写的时候总是卡在接收缓存区为空的循环里,读不了数据是怎么回事?一定要写一起?读数据之前总是要先发送数据吗?

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