OpenEdv-开源电子网

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

这个怎么理解

[复制链接]

28

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
金钱
230
注册时间
2013-5-13
在线时间
0 小时
发表于 2013-8-22 09:21:48 | 显示全部楼层 |阅读模式
RCC->CR|=0x00010000;  //外部高速时钟使能HSEON
 while(!(RCC->CR>>17));//等待外部时钟就绪
RCC->CR右移17位后不就出界了吗?这样理解可以吗,RCC->CR右移17位之后RCC->CR变成了0,然后while成立,这样对吗,麻烦指导……
人类是地球的,但地球不是人类的
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

107

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
298
金钱
298
注册时间
2013-5-5
在线时间
0 小时
发表于 2013-8-22 09:25:57 | 显示全部楼层
问你STM32的32是什么意思?
游走在生活里,你我都是涉世未深的旅人,前方有我们为之心怡的归宿,身后又是一片葱郁的往昔,让生活的零碎随风而来,又似过往的随风云烟而散,唯有这厮,方能守得云开,待到春花烂漫!
回复 支持 反对

使用道具 举报

40

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
255
金钱
255
注册时间
2013-5-22
在线时间
0 小时
发表于 2013-8-22 09:36:47 | 显示全部楼层
回复【2楼】冰尘牧之:
---------------------------------
强!!一语中的。 stm32 是32位的
typedef struct 

vu32 CRL; 
vu32 CRH; 
vu32 IDR; 
vu32 ODR; 
vu32 BSRR; 
vu32 BRR; 
vu32 LCKR; 
} GPIO_TypeDef; 
这里定义的CR寄存器是32位的,所以移17位不会移出去的!!
回复 支持 反对

使用道具 举报

28

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
金钱
230
注册时间
2013-5-13
在线时间
0 小时
 楼主| 发表于 2013-8-22 09:51:02 | 显示全部楼层
回复【2楼】冰尘牧之:
---------------------------------
你是高手,如果想回答就好好回答,回答不了,请勿嘲笑。还是要感谢你的精彩回答
人类是地球的,但地球不是人类的
回复 支持 反对

使用道具 举报

28

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
金钱
230
注册时间
2013-5-13
在线时间
0 小时
 楼主| 发表于 2013-8-22 09:52:45 | 显示全部楼层
回复【3楼】lin111000713:
---------------------------------
0x00010000     1在这
人类是地球的,但地球不是人类的
回复 支持 反对

使用道具 举报

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
发表于 2013-8-22 10:44:44 | 显示全部楼层
LZ看懂上面两位的回答了嘛,看懂了的话请解释下,我没看懂。
还有光看这两句应该不完整,此时的RCC->CR的值为多少?能不能把整段代码贴出来
博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
回复 支持 反对

使用道具 举报

28

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
金钱
230
注册时间
2013-5-13
在线时间
0 小时
 楼主| 发表于 2013-8-22 10:48:16 | 显示全部楼层
回复【6楼】feilusia:
---------------------------------
楼主位写的就是我的理解,此时的RCC->CR的值应该是0,不知对不。等待高手
人类是地球的,但地球不是人类的
回复 支持 反对

使用道具 举报

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
发表于 2013-8-22 11:01:56 | 显示全部楼层
回复【7楼】二月三十:
---------------------------------
STM32是32位的,移了17位后,那第17位的值现在在第0位,第18位的值现在在第1位……意思就是说判断第17位之后的值。
while(!(RCC->CR>>17));你这一句我有疑问,你寄存器移位17位后,最高位的十几位为0,再取反就会产生1,只要有一个位为1,while就退不出来。我觉得你这个while永远都退不出来。
博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
回复 支持 反对

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
发表于 2013-8-22 11:03:31 | 显示全部楼层
不是0x00000001么?没出界啊
一直努力就很好。
回复 支持 反对

使用道具 举报

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
发表于 2013-8-22 11:07:41 | 显示全部楼层
回复【9楼】qq942266575:
---------------------------------
第0位的值移1出界,第1位的值移2出界……第16位的值移17出界
博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
回复 支持 反对

使用道具 举报

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
发表于 2013-8-22 11:42:45 | 显示全部楼层
回复【4楼】二月三十:
---------------------------------
总体的应该是这样:
RCC->CR|=0x00010000;这句开启第16位的HSEON(外部高速时钟使能位)
然后不停的判断第17位的 HSERDY(外部高速时钟就绪标志)
当就绪的时候该位为1:while(!0x000000001)=while(0);

不过我怎么觉得“!0x000000001=0xfffffffe”……我对!的理解可能理解错了。
博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
回复 支持 反对

使用道具 举报

28

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
金钱
230
注册时间
2013-5-13
在线时间
0 小时
 楼主| 发表于 2013-8-22 12:00:24 | 显示全部楼层
回复【11楼】feilusia:
---------------------------------
非不是取反,更何况你那个“!0x000000001=0xfffffffe”也不是取反,没有这种语法吧。
我觉得咱俩理解的都错了,期待高手。
人类是地球的,但地球不是人类的
回复 支持 反对

使用道具 举报

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
发表于 2013-8-22 14:06:12 | 显示全部楼层
回复【12楼】二月三十:
---------------------------------
“!”是逻辑取反。意思就是说我表述的那个是正确的。
博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
回复 支持 反对

使用道具 举报

5

主题

107

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
298
金钱
298
注册时间
2013-5-5
在线时间
0 小时
发表于 2013-8-22 22:08:06 | 显示全部楼层
回复【4楼】二月三十:
--------------------------------
1,我不是高手,也是菜鸟一个
2,那样说是让你自己去找答案
3,既然你说了,那我告诉你,你的理解对的,不过”出界“这个词是你发明的?
    楼上的去百度!和~的区别
游走在生活里,你我都是涉世未深的旅人,前方有我们为之心怡的归宿,身后又是一片葱郁的往昔,让生活的零碎随风而来,又似过往的随风云烟而散,唯有这厮,方能守得云开,待到春花烂漫!
回复 支持 反对

使用道具 举报

15

主题

180

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
348
金钱
348
注册时间
2013-4-23
在线时间
25 小时
发表于 2013-8-22 23:14:11 | 显示全部楼层
回复【楼主位】二月三十:
---------------------------------
RCC_CR是个32位的寄存器,第17位是外部时钟是否就绪,就绪就会变为1.while(!(RCC->CR>>17));若时钟未就绪,则!(RCC->CR>>17)=1,一直等待,就绪则!(RCC->CR>>17)=0,跳出while循环
回复 支持 反对

使用道具 举报

2

主题

13

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2013-7-21
在线时间
0 小时
发表于 2013-8-23 08:44:04 | 显示全部楼层
回复【3楼】lin111000713:
---------------------------------
为什么STM32的存储器宽度是8bit的,也就是说为什么它只能寻址4GB=4G*8bit,而不是4G*32bit?
为什么STM32采用16bit的端口,如GPIOA只有16bit,而不是32bit?
真正牛逼的,不是那些可以随口拿来夸耀的事迹,而是那些在困境中依然保持微笑的凡人。 --程浩
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-17 01:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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