新手入门
- 积分
- 17
- 金钱
- 17
- 注册时间
- 2019-12-9
- 在线时间
- 4 小时
|
最近在做stm32f1的spi与ad7734通信的一个小实验,无奈卡在了spi通信上,如下程序所示,我对原子哥的例程做了小小的修改以检查出错的地方,发现程序运行到 if(retry>200)return 4; 就跳出了函数,得到的返回值一直是4. spi的初始化用的也是原子哥的spi_init(). 只不过将spi2改成了spi1. 有大佬可以解惑吗
u8 SPI1_ReadWriteByte(u8 TxData)
{
u8 retry=0;
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET) //检查指定的SPI标志位设置与否:发送缓存空标志位
{
retry++;
if(retry>200)return 4;
}
SPI_I2S_SendData(SPI1, TxData); //通过外设SPIx发送一个数据
retry=0;
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET) //检查指定的SPI标志位设置与否:接受缓存非空标志位
{
retry++;
if(retry>200)return 1;
}
return SPI_I2S_ReceiveData(SPI1); //返回通过SPIx最近接收的数据
}
|
|