STM32 SPI 读写一个字节函数
u8SPI2_ReadWriteByte(u8TxData){u8retry=0;while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLA...
u8 SPI2_ReadWriteByte(u8 TxData)
{
u8 retry=0;
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET) //检查指定的SPI标志位设置与否:发送缓存空标志位
{
retry++;
if(retry>200)return 0;
}
SPI_I2S_SendData(SPI2, TxData); //通过外设SPIx发送一个数据
retry=0;
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET) //判断接收是否完成
{
retry++;
if(retry>200)return 0;
}
return SPI_I2S_ReceiveData(SPI2); //返回通过SPIx最近接收的数据
}
两个问题:
问题1:比如TxData为0xFF,那么return SPI_I2S_ReceiveData(SPI2)是不是得到0xFF?
问题2:变量retry的作用在循环中比如超过200,还没有发送或接收到0XFF,就说明发送或接收出错,返回0??
大家好,不知道我分析的对不对? 展开
{
u8 retry=0;
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET) //检查指定的SPI标志位设置与否:发送缓存空标志位
{
retry++;
if(retry>200)return 0;
}
SPI_I2S_SendData(SPI2, TxData); //通过外设SPIx发送一个数据
retry=0;
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET) //判断接收是否完成
{
retry++;
if(retry>200)return 0;
}
return SPI_I2S_ReceiveData(SPI2); //返回通过SPIx最近接收的数据
}
两个问题:
问题1:比如TxData为0xFF,那么return SPI_I2S_ReceiveData(SPI2)是不是得到0xFF?
问题2:变量retry的作用在循环中比如超过200,还没有发送或接收到0XFF,就说明发送或接收出错,返回0??
大家好,不知道我分析的对不对? 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询