[STM32F1] 关于STM32的SPI的程序历程

[复制链接]
1765|4
 楼主| 电子过客 发表于 2014-8-31 21:01 | 显示全部楼层 |阅读模式
/SPI1 读写一个字节
//TxData:要写入的字节
//返回值:读取到的字节
u8 SPI1_ReadWriteByte(u8 TxData)
{               
        u8 retry=0;                                         
        while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET) //检查指定的SPI标志位设置与否:发送缓存空标志位
                {
                retry++;
                if(retry>200)return 0;
                }                          
        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最近接收的数据                                            
}

这是原子的参考例子, 我看了半天也没弄懂 retry变量什么意思 retry++;
                if(retry>200)return 0;
                }         具体什么意思想要做什么没看懂,请各位指点下好吗                 



zh113214 发表于 2014-9-1 23:28 | 显示全部楼层
我看了半天呢 ,也帮不了你啊,,,
SLHSu37 发表于 2014-9-2 09:03 | 显示全部楼层
超时判断嘛,如果发送缓存非空或者接受缓存空,等一会((retry++)<200)发送或者接收,超过就不等咯,干别的去,一会再来!
悲伤流逝 发表于 2014-9-2 09:15 | 显示全部楼层
楼上正解:)
Rain_King 发表于 2014-9-2 09:17 | 显示全部楼层
应该是为了避免死循环......
您需要登录后才可以回帖 登录 | 注册

本版积分规则

55

主题

210

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部