SPI 的读写程序,F103和F767是不一样的,F767怎么判断接收缓冲器为空呢?

2019-07-20 01:01发布

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;                              //返回收到的数据               
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
你恒哥521
1楼-- · 2019-07-20 04:10
找到了,其实HAL_SPI_TransmitReceive函数内部把判断接收缓冲器为空的都已经判断了,不用自己再判断一次了!
正点原子
2楼-- · 2019-07-20 04:33
我们例程不是都有么?
你恒哥521
3楼-- · 2019-07-20 06:26
 精彩回答 2  元偷偷看……
fzq
4楼-- · 2019-07-20 08:24
可以分享一下程序吗  有偿,QQ1607236374

一周热门 更多>