野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13180|回复: 8

新手请教,关于C语言语法的困惑

[复制链接]
发表于 2015-4-2 15:39:20 | 显示全部楼层 |阅读模式
如:

RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOF, ENABLE);

两个参数中间的“|”是起什么做用?是把这两个参数视做一个数组吗?
回复

使用道具 举报

发表于 2015-4-2 15:43:50 | 显示全部楼层
这是   操作啊,就是两个都是,,,C语言里边很常见的吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-2 16:21:02 | 显示全部楼层
亽亼 发表于 2015-4-2 15:43
这是  或  操作啊,就是两个都是,,,C语言里边很常见的吧

那为什么要在这里做一个或操作呢?
回复 支持 反对

使用道具 举报

发表于 2015-4-2 16:28:56 | 显示全部楼层
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOF, ENABLE);
实现了开启GPIOB 和 GPIOF两个端口的时钟,,,
当然楼主不嫌麻烦可以这样:
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE);
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOF, ENABLE);

姐妹啊,能不能看看书再来啊,这节奏不对啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-2 16:48:45 | 显示全部楼层
亽亼 发表于 2015-4-2 16:28
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOF, ENABLE);
实现了开启GPIOB 和 GPIO ...

对啊,我就是搞不明白
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOF, ENABLE);

为什么等同于

RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE);
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOF, ENABLE);

我不用C好多年了,很多C语言的思维方式理解不了,“|” 操作出来不是一个布尔量吗(我明白C语言里没有布尔量),这个函数的功能是打开两个GPIO口的时钟,但为什么一个“|”操作就能同时打开两个,怎么想都不明白

回复 支持 反对

使用道具 举报

发表于 2015-4-2 17:01:52 | 显示全部楼层
本帖最后由 11kxmx 于 2015-4-2 17:07 编辑
JavaBoy 发表于 2015-4-2 16:48
对啊,我就是搞不明白
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOF, ENABLE);
...


在寄存器里经常是一位二制数控制一个功能,1表示使能 0表示关闭
假设二进制数最低位是1 即 01 是打开第一个控制功能
      第2位是1 即 10 是打开第二个控制功能
那么01 | 10 =11 就表示两个控制功能都打开
 第3位是1 即 100 是打开第三个控制功能
01 | 10 | 100=111 就表示3个控制功能都打开
|是按位或
||才是逻辑或

回复 支持 反对

使用道具 举报

发表于 2015-4-2 17:05:14 | 显示全部楼层
这个函数就是有这个功能啊,要搞明白也可以深入函数分析啊。。
“|” 操作怎么会单单是布尔量呢,,,是每个位进行或运算,保存在该位的哦,
比如a=0x01;b=0x02;那么a|b结果就是0x03啊。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-2 17:05:30 | 显示全部楼层
11kxmx 发表于 2015-4-2 17:01
在寄存器里经常是一位二制数控制一个功能,1表示使能 0表示关闭
假设二进制数最低位是1 即 01 是 ...

搞明白了一些事情,“|”这个是按位或,一个位代表一个GPIO口,就像你说的那样

假设:
GPIOA = 01
GPIOB = 10

那 GPIOA|GPIOB == 11

这样两个端口就都打开了。

原来如此。

明白了,多谢大伙
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-9-21 21:49 , Processed in 0.092275 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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