打印

求助:关于程序的疑问

[复制链接]
1111|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
leshak|  楼主 | 2012-6-24 00:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  刚上手STM32方面的程序,有点疑问
1.   RCC_APB2ENR |= (1<<4);
这个语句的|=是按位或赋值,可是(1<<4)将第4位赋值1,C语言规定<<左边不是一个变量嘛?而且<<是移位功能啊,这个语句如何实现BIT 4赋值成1的呢?
2.   (*((volatile unsigned long *)0xE0028000))和(*((volatile unsigned long *)(0xE0028000))) 有什么区别嘛?


3.RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB| , ENABLE);
RCC_APB2Periph_GPIOB| 形参RCC_APB2Periph_GPIOB后面跟个| 或符号是什么意思呢?


查了C语言的书籍想不通,还望大家帮忙下,谢谢了!



沙发
梅花望青竹| | 2012-6-24 08:43 | 只看该作者
有这个| 在后面吗?没有用到过。<<实现的是移位寄存器的功能而已,内部的结构真不懂!

使用特权

评论回复
板凳
adce| | 2012-6-24 14:12 | 只看该作者
1.没那个规定 (1<<4) 是 0x01左移5位 是0x10 RCC_APB2ENR|=0x10
2.应该一样
3.他拷贝过来的代码去掉了|后面的内容 但是忘了去掉|了 去掉就行...

使用特权

评论回复
地板
lai832| | 2012-6-24 16:04 | 只看该作者
如楼上,
1:真不知有这规定,反正用得N多.
2.是一样的,后者是习惯,当后面是表达式时,括号就很有用了
3. |应该是忘了删的,    在STM库里,其实就是N个量或后,得到一个量传递而已------因为RCC_APB2Periph_GPIOB等只是32位中的一位为"1",并且各个不同位.你也可以用"+"一样的---------注:只在这类特定的参数/声明才可以这样

使用特权

评论回复
5
acgean| | 2012-6-25 08:39 | 只看该作者
1<<4 不就是 16 嘛。一个或操作就是置位了
看来楼主还要补习补习c。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

101

主题

522

帖子

4

粉丝