智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1638|回复: 3
打印 上一主题 下一主题

spi spisr寄存器中spif位

[复制链接]

2

主题

9

帖子

0

精华

注册会员

Rank: 2

积分
101
威望
53
贡献
26
兑换币
30
注册时间
2014-1-21
在线时间
11 小时
跳转到指定楼层
1#
发表于 2014-1-28 22:19:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想知道spif一般是在发送数据的时候在给spidr复制后会变为1,还是在接收数据的时候变为1. 因为我有看到这样的代码
  1. void SPI_GetChar(U8 *pu8Char)
  2. {
  3.   while(SPI_SR_SPIF==0);
  4.   *pu8Char=SPI_DR;       
  5. }
复制代码
说明,spif是在接收数据的时候应该变为1,但是我这里完全不是。实在发送数据的时候,一旦给spidr赋值,spif就会跳成1,但是一旦赋值完成,spif就会变为0.所以我上百年那个函数,永远没有办法接收到spidr中的数据。我想问一下这是为什么
回复

使用道具 举报

2

主题

9

帖子

0

精华

注册会员

Rank: 2

积分
101
威望
53
贡献
26
兑换币
30
注册时间
2014-1-21
在线时间
11 小时
2#
 楼主| 发表于 2014-1-29 15:24:35 | 只看该作者
之前那个可能没有表达清楚,我再写一遍
我想知道spif位是在发送数据时给数据寄存器SPIDR赋值后会变为1,还是在接收数据的时候变为1. 因为我有看到这样的代码
void SPI_GetChar(U8 *pu8Char)

{

  while(SPI_SR_SPIF==0);

  *pu8Char=SPI_DR;        

}
我认为这个代码说明,spif是在接收数据的时候应该变为1。但是为什么我这里接收的时候,始终跳不出while这个死循环呢?
回复 支持 反对

使用道具 举报

2

主题

9

帖子

0

精华

注册会员

Rank: 2

积分
101
威望
53
贡献
26
兑换币
30
注册时间
2014-1-21
在线时间
11 小时
3#
 楼主| 发表于 2014-1-29 18:06:37 | 只看该作者
大家给点想法啊
回复 支持 反对

使用道具 举报

2

主题

9

帖子

0

精华

注册会员

Rank: 2

积分
101
威望
53
贡献
26
兑换币
30
注册时间
2014-1-21
在线时间
11 小时
4#
 楼主| 发表于 2014-2-6 15:09:55 | 只看该作者
我已经开始做其他部分了,不过大家如果有什么好的想法,随时留言啊
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-11-6 09:27 , Processed in 0.129180 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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