STM32
直播中

王玉华

7年用户 147经验值
私信 关注
[问答]

按照教程写完如下函数后,能够进行仿真实验吗

请问我按照教程写完如下函数后 ,能够进行仿真实验吗?

u8 SPIx_ReadWriteByte(u8 TxData){u8 retry=0; while((SPI1->SR&1<<1)==0)//等待发送区空{retry++;if(retry>200)return 0;}  SPI1->DR=TxData;   //发送一个byte retry=0;while((SPI1->SR&1<<0)==0) //等待接收完一个byte  {retry++;if(retry>200)return 0;}      return SPI1->DR;          //返回收到的数据    }
也就是说 我写完这个函数后不对W25X16进行任何编程和操作,

我想跳过W25X16后直接操作main函数如下:
int main(void)


     u8 i;
     /**STM32初始化 从略**/
     while(1)
    {
i=SPIx_ReadWriteByte(0x09);
         printf("%d",i);
    }
  }
就是为了检测spi是否可用,请问这样做可以吗?
如果可以 应该返回 9 才对,
为什么返回值总是为0
非常感谢!

回帖(4)

周雯葭

2020-5-22 15:32:48
为什么会返回9?
举报

李勇

2020-5-22 15:51:26
我觉得往数据寄存器里写 i=SPIx_ReadWriteByte(0x09);然后寄存器再接收这个数据:0x09;不是9吗?
 我对spi还不是很了解 ,这是我的见解,
举报

刘雅真

2020-5-22 16:05:32
为什么会接收到你的9?
你短接了MOSI和MISO么?
举报

杨斌

2020-5-22 16:21:07
虽然原子兄不明白我的意思  但是我明白你的意思了,我没有接从设备  不会有数据的。。。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分