STM32 SPI 当作从机
STM32 SPI接收主机发来的数据,通过SPI。
程序就是一直等主机发来数据,第一个字节是命令,01做开IO ,02关IO ,其它命令可能是主机有数据要写入
或者主机有要读出数据
现在代码老是错误 ,接收一个字节还好,接收俩个字节 或三个字节就不行了
u8 SPI_Write_Read_604(u8 TxData)
{
u8 temp1;
u16 retry=0;
if((RAM_2C & BITS(7))==0) // =0 说明关闭SPI
{
return 0x1c;
}
// SPI_I2S_ClearFlag(SPI1,SPI_I2S_FLAG_TXE);
// SPI_I2S_ClearFlag(SPI1,SPI_I2S_FLAG_RXNE);
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET) //检查指定的SPI标志位设置与否:发送缓存空标志位
{
retry++;
//if(retry>2000)return 0;
if(retry>2000)break;
}
SPI_I2S_SendData(SPI1, TxData); //通过外设SPIx发送一个数据
retry=0;
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET)//检查指定的SPI标志位设置与否:接受缓存非空标志位
{
//retry++;
//if(retry>200)return 0;
}
return SPI_I2S_ReceiveData(SPI1); //返回通过SPIx最近接收的数据
}