OpenEdv-开源电子网

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

求助!SPI标志位检测不到,无法开启传输。

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2019-12-9
在线时间
4 小时
发表于 2020-4-13 08:51:11 | 显示全部楼层 |阅读模式
最近在做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最近接收的数据                                            
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

154

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
439
金钱
439
注册时间
2018-12-21
在线时间
126 小时
发表于 2020-4-13 17:56:13 | 显示全部楼层
没有办法,细节太少了。你有在线调试的xx-Link自己去设置断点查看相关寄存器配置正确与否,这是最高效的办法。
IIS其实很好调,反正我随便搞搞就过了,你加油自己多试试应该可以很快过关。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-25 06:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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