打印
[STM32F1]

关于STM32的SPI的程序历程

[复制链接]
1321|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 | 只看该作者
楼上正解:)

使用特权

评论回复
5
Rain_King| | 2014-9-2 09:17 | 只看该作者
应该是为了避免死循环......

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

54

主题

205

帖子

2

粉丝