OpenEdv-开源电子网

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

while(!(RCC->CR>>17))问题

[复制链接]

14

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2011-11-7
在线时间
0 小时
发表于 2011-11-10 10:19:03 | 显示全部楼层 |阅读模式
 

  fficeffice" />





">>"
是移位运算符。按我的理解RCC-CR>>17的意思是CR寄存器内容往右移17位,那31-14都要会被清零。那这个while()就相当没有作用。逻辑上说这个是不对的。有点迷惑了,这个>>17到底是什么意思啊

 

http:www.infor-link.com
http://nrf51822ek-pro.taobao.com
nRF51822开发板
DA14580开发板
蓝牙4.0?BLE开发板套件
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2011-11-14
在线时间
2 小时
发表于 2011-11-14 21:23:59 | 显示全部楼层
对此,原子哥也说了写成(RCC-CR>>17)&0X01比较合适,但我感觉RCC-CR>>17是不准确的,比方说如果第十八位是1,那么右移17位后不管时钟是否就绪,表达式“RCC-CR>>17”的结果始终为真,这样while(!(RCC-CR>>17))不就没有意义了吗?所以写成(RCC-CR>>17)&0X01才是最准确的,我的理解不知道正确不正确?
回复 支持 1 反对 0

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-11-10 10:40:45 | 显示全部楼层
回复【楼主位】andy_chang:
---------------------------------
右移!!!
这个:1111 1110
右移1位你说是:0111 1110,还是 0111 1111?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

14

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2011-11-7
在线时间
0 小时
 楼主| 发表于 2011-11-10 20:59:31 | 显示全部楼层
不好意思,把RCC->CR|=0X00010000落掉了没有看。
http:www.infor-link.com
http://nrf51822ek-pro.taobao.com
nRF51822开发板
DA14580开发板
蓝牙4.0?BLE开发板套件
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-11-15 00:38:58 | 显示全部楼层
是的
回复 支持 反对

使用道具 举报

11

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2012-2-17
在线时间
0 小时
发表于 2012-2-22 10:53:54 | 显示全部楼层
只能说太棒了,一下子解开迷惑
那些年,我们一起走过的日子...
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
23
金钱
23
注册时间
2012-10-26
在线时间
0 小时
发表于 2012-12-7 17:20:45 | 显示全部楼层
RCC_CR中第17位是HSERDY,即外部时钟就绪位,当外部时钟就绪时,HSERDY位就等于1了,RCC-CR>>17语句将第17位移到第0位,于是RCC-CR就等于0x00000001了,(!(RCC-CR>>17))值即为0了,while(!(RCC-CR>>17))就执行完了。
就这么理解应该可以吧
回复 支持 反对

使用道具 举报

0

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
349
金钱
349
注册时间
2014-4-6
在线时间
60 小时
发表于 2014-4-6 10:41:55 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
大神,这语句取反是位取反还是整个数值取反?还有这右移17位,移过之后该数值第一位是HSE RDY,但是后面还有19到31位的值呀,这怎么判断HSE RDY是1还是0呢?请回答
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-4-6 18:56:23 | 显示全部楼层
回复【8楼】不稳定的自然现象:
---------------------------------
!是对整个表达式的值进行真假取反。
后面的19到31位,默认都是0的。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2014-9-28
在线时间
0 小时
发表于 2014-9-28 11:43:56 | 显示全部楼层
回复【9楼】正点原子:
---------------------------------
如果这样写是不是保险一点:while (!(RCC_>CR &=0X00020000)).
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-9-28 23:41:00 | 显示全部楼层
回复【10楼】常青藤:
---------------------------------
可以
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
24
金钱
24
注册时间
2015-1-15
在线时间
0 小时
发表于 2015-1-15 19:59:25 | 显示全部楼层
STM32F4时钟配置函数
while(((RCC->CR&(1<<17))==0)&&(retry<0X1FFF))retry++;//等待 HSE RDY
retry<0X1FFF是什么意思了
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
24
金钱
24
注册时间
2015-1-15
在线时间
0 小时
发表于 2015-1-15 21:40:56 | 显示全部楼层


0x1fff这个值是什么意思了?如果是启动时间那是怎么得出这个值的?
回复 支持 反对

使用道具 举报

6

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2014-12-11
在线时间
3 小时
发表于 2015-9-21 21:09:51 | 显示全部楼层
回复【7楼】whp0712:
---------------------------------
是的,就这么理解,真是前人栽树后人乘凉。
我会让你以我为荣
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2015-10-3
在线时间
0 小时
发表于 2015-10-3 20:08:41 | 显示全部楼层
回复【11楼】正点原子:
---------------------------------
那请问一下右移十七位使得第0位变为1,第0位是内部振荡器使能。所以右移有什么意义呢????直接while(!(RCC->CR))不行吗???希望解答
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-10-4 11:04:56 | 显示全部楼层
回复【15楼】小白爱学习:
---------------------------------
你这。。。。

这是为了判断第17位是否为1.

至于你这种while(!(RCC->CR))的写法。行不行,你自己验证吧。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 12:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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