SPI1_ReadWriteByte()读取出来的不是刚写进去的吗?不是的话那读取哪个字节?

2019-07-21 07:08发布

[mw_shl_code=c,true]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最近接收的数据 [/mw_shl_code] 读取出来的字节不是刚写进去的吗?如果不是的话,那读取哪个字节?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
正点原子
1楼-- · 2019-07-21 12:48
 精彩回答 2  元偷偷看……
TinyBoy
2楼-- · 2019-07-21 17:54
你看写的时候,是不是不需要考虑返回值。
k_金先生
3楼-- · 2019-07-21 18:59
回复【2楼】TinyBoy:
---------------------------------
写的时候不是没有返回值啊   写的时候SPI->DR=TXdate.  读的时候return=SPI->DR
蔚蓝馨
4楼-- · 2019-07-21 20:18
回复【4楼】正点原子:
---------------------------------
原子哥,我现在的情况是,不管有没有从机都能返回值。之前没接从机的确是不能返回的,甚至连sclk的波形都没有,你说是什么原因啊
猪猪侠157
5楼-- · 2019-07-21 22:50
读一个字节: 读的时候要注意一个问题,因为从模式是没法提供时钟的,所以主模式下必须要在接收的同时提供时钟。办法就是发送一个字节来实现,因为还是上面说的,发送一个字节就意味着收到一个字节,代码和写完全一样,只要把读出来的字节保存即可

一周热门 更多>