打印
[STM32F1]

SPI的TXE和RXNE标志位

[复制链接]
6813|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tgwfcc|  楼主 | 2014-11-19 20:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
u8 SPI_SendByte(u8 byte)
{
        while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)==RESET);
        SPI_I2S_SendData(SPI1,byte);
       
        while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_RXNE)==RESET);
        return (SPI_I2S_ReceiveData(SPI1));
}

1.这个函数中,有SPI_I2S_FLAG_TXE==RESET,TXE是发送缓存空标志位,TXE=1代表空,TXE=0代表非空?是这样的吗?
我理解的是当TXE这个标志位为空,也就是发送缓存为空时,发送数据。但是TXE==RESET呢?
2.同样的,RXNE这个标志位,SET代表什么?RESET代表什么呢?谢谢!
沙发
styleno1| | 2014-11-19 21:04 | 只看该作者
代表什么请去看定义,他们不过是宏定义或枚举,这个while()语句的作用是等待标志位置位。

使用特权

评论回复
板凳
mmuuss586| | 2014-11-19 21:40 | 只看该作者
一个代表0,一个代表1,,点GO TO DEFINE能找到定义的地方;

使用特权

评论回复
地板
tgwfcc|  楼主 | 2014-11-20 17:31 | 只看该作者
mmuuss586 发表于 2014-11-19 21:40
一个代表0,一个代表1,,点GO TO DEFINE能找到定义的地方;

我点进去定义的是地址?
#define SPI_I2S_FLAG_RXNE               ((uint16_t)0x0001)
#define SPI_I2S_FLAG_TXE                ((uint16_t)0x0002)

使用特权

评论回复
5
tgwfcc|  楼主 | 2014-11-20 17:31 | 只看该作者
mmuuss586 发表于 2014-11-19 21:40
一个代表0,一个代表1,,点GO TO DEFINE能找到定义的地方;

斑竹,我点进去定义的是地址?
#define SPI_I2S_FLAG_RXNE               ((uint16_t)0x0001)
#define SPI_I2S_FLAG_TXE                ((uint16_t)0x0002)

使用特权

评论回复
6
mmuuss586| | 2014-11-20 19:24 | 只看该作者
tgwfcc 发表于 2014-11-20 17:31
斑竹,我点进去定义的是地址?
#define SPI_I2S_FLAG_RXNE               ((uint16_t)0x0001)
#define SP ...

我说的是这个RESET;
你那个是地址是对的;
SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)这句,是获取某个寄存器的值;
返回的结果和RESET比较是否相等,相等一直等待;

使用特权

评论回复
7
tgwfcc|  楼主 | 2014-11-21 10:34 | 只看该作者
本帖最后由 tgwfcc 于 2014-11-21 15:46 编辑
mmuuss586 发表于 2014-11-20 19:24
我说的是这个RESET;
你那个是地址是对的;
SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)这句,是获取 ...

恩,这个我知道,我意思是说0代表发送缓存为空还是1代表发送缓存为空?
从网上查的,1代表空,0代表非空。
那个语句的意思是说:while();当while语句为真的,一直等待,直到为假,也就是一直等待发送缓存为空,才执行发送数据命令,是这样吧?
或者换成while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)==SET) SPI_I2S_SendData(SPI1,byte);这样更好理解吧?

使用特权

评论回复
8
lingzhi12321| | 2018-6-26 10:18 | 只看该作者

使用特权

评论回复
9
guanjiaer| | 2018-6-26 10:57 | 只看该作者
如果缓存非空的话 会等待

使用特权

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

本版积分规则

34

主题

260

帖子

4

粉丝