新手上路
- 积分
- 24
- 金钱
- 24
- 注册时间
- 2016-10-3
- 在线时间
- 15 小时
|
15金钱
STM32F103的SPI读写程序,有while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET) 进行判断发送或接收缓冲器为空,而STM32F767确没有判断函数,那该怎么去判断F767的spi接受和发送缓冲器为空呢?
为啥我用STM32F767这个函数发送一个8位指令,返回的数据全是0????这两个问题怎么解决?????
谢谢各位大神!下面是程序
u8 SPI2_ReadWriteByte(u8 TxData):STM32F103 SPI读写程序
{
u8 retry=0;
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET) //检查指定的SPI标志位设置与否:发送缓存空标志位
{
retry++;
if(retry>200)return 0;
}
SPI_I2S_SendData(SPI2, TxData); //通过外设SPIx发送一个数据
retry=0;
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET) //检查指定的SPI标志位设置与否:接受缓存非空标志位
{
retry++;
if(retry>200)return 0;
}
return SPI_I2S_ReceiveData(SPI2); //返回通过SPIx最近接收的数据
}
u8 SPI2_ReadWriteByte(u8 TxData):STM32F767 SPI读写程序
{
u8 Rxdata;
HAL_SPI_TransmitReceive(&SPI2_Handler,&TxData,&Rxdata,1, 1000);
return Rxdata; //返回收到的数据
}
|
最佳答案
查看完整内容[请看2#楼]
找到了,其实HAL_SPI_TransmitReceive函数内部把判断接收缓冲器为空的都已经判断了,不用自己再判断一次了!
|