OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3954|回复: 3

关于原子SPI程序有一点不懂

[复制链接]

8

主题

13

帖子

0

精华

高级会员

Rank: 4

积分
530
金钱
530
注册时间
2016-6-3
在线时间
42 小时
发表于 2016-7-30 09:56:07 | 显示全部楼层 |阅读模式
1金钱
u8 SPI1_ReadWriteByte(u8 TxData)
{                                          
  while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET){}//等待发送区空  
        SPI_I2S_SendData(SPI1, TxData); //通过外设SPIx发送一个byte  数据       
  while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET){} //等待接收完一个byte  
        return SPI_I2S_ReceiveData(SPI1); //返回通过SPIx最近接收的数据        }
中文参考手册里是这么说的
发送缓冲区为空 (TXE)
此标志置 1 时,表示发送缓冲区为空,可以将待发送的下一个数据加载到缓冲区中。对
SPI_DR 寄存器执行写操作时,将清零 TXE 标志。
接收缓冲区非空 (RXNE)
此标志置 1 时,表示接收缓冲区中存在有效的已接收数据。读取 SPI_DR 时,将清零该
标志。

TXE为1的时候不才是发送区空了吗,为什么程序里面是为0的时候为空,RXNE为1的时候才是接受完一个byte,为什么程序里是为0的时候才接受完?




最佳答案

查看完整内容[请看2#楼]

这段程序就是跟数据手册说的一样啊,楼主要复习一下c语言!!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

16

主题

173

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2441
金钱
2441
注册时间
2014-11-5
在线时间
348 小时
发表于 2016-7-30 09:56:08 | 显示全部楼层
这段程序就是跟数据手册说的一样啊,楼主要复习一下c语言!!
回复

使用道具 举报

8

主题

13

帖子

0

精华

高级会员

Rank: 4

积分
530
金钱
530
注册时间
2016-6-3
在线时间
42 小时
 楼主| 发表于 2016-7-30 14:00:20 | 显示全部楼层
hello_galaxy 发表于 2016-7-30 13:24
这段程序就是跟数据手册说的一样啊,楼主要复习一下c语言!!

RESET是1?
回复

使用道具 举报

8

主题

13

帖子

0

精华

高级会员

Rank: 4

积分
530
金钱
530
注册时间
2016-6-3
在线时间
42 小时
 楼主| 发表于 2016-7-30 14:07:20 | 显示全部楼层
hello_galaxy 发表于 2016-7-30 13:24
这段程序就是跟数据手册说的一样啊,楼主要复习一下c语言!!

哦明白了,忽略了等待这个字
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 23:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表