OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4053|回复: 4

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

[复制链接]

10

主题

23

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2016-10-3
在线时间
15 小时
发表于 2018-3-15 12:30:06 | 显示全部楼层 |阅读模式
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函数内部把判断接收缓冲器为空的都已经判断了,不用自己再判断一次了!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

23

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2016-10-3
在线时间
15 小时
 楼主| 发表于 2018-3-15 12:30:07 | 显示全部楼层
找到了,其实HAL_SPI_TransmitReceive函数内部把判断接收缓冲器为空的都已经判断了,不用自己再判断一次了!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-3-16 01:11:22 | 显示全部楼层
我们例程不是都有么?
回复

使用道具 举报

10

主题

23

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2016-10-3
在线时间
15 小时
 楼主| 发表于 2018-3-16 09:09:52 | 显示全部楼层
正点原子 发表于 2018-3-16 01:11
我们例程不是都有么?

例程中也没判断是否为空啊?只是直接用发送接收函数HAL_SPI_TransmitReceive
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2019-5-11
在线时间
5 小时
发表于 2019-7-3 15:54:23 | 显示全部楼层
可以分享一下程序吗  有偿,QQ1607236374
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-11 07:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表