代码中的GPIO.BCM是什么
时间: 2025-07-22 19:42:00 浏览: 2
<think>我们被问到:代码中的GPIO.BCM是什么?
在树莓派的RPi.GPIO库中,有两种引脚编号模式:BCM和BOARD。
- BCM(Broadcom SOC Channel)模式:使用Broadcom芯片的GPIO编号。这种编号方式与树莓派主板上的物理引脚位置无关,而是根据Broadcom芯片的GPIO寄存器编号。不同版本的树莓派可能会有不同的BCM编号。
- BOARD模式:使用树莓派主板上P1接头的物理引脚编号。这种编号方式是固定的,不会因为树莓派版本的不同而变化。
在代码中,我们使用:
GPIO.setmode(GPIO.BCM)
这表示后续的GPIO引脚编号都按照BCM编号方式。
例如,在树莓派3B+上,物理引脚11对应的BCM编号是17(在早期版本中可能是其他编号)。如果我们使用BCM模式,那么代码中写17就是指这个物理引脚11。
使用BCM模式的好处是,当我们使用不同的树莓派版本时,只要BCM编号相同,代码就可以兼容(但要注意不同版本树莓派GPIO布局的变化)。而BOARD模式则保证了物理引脚编号的固定,但代码可能在不同型号树莓派上需要调整。
在我们的代码中,红外传感器连接在BCM编号为17的引脚上(即物理引脚11)。
因此,GPIO.BCM就是设置使用BCM编号模式。</think>在树莓派GPIO编程中,`GPIO.BCM` 是一种引脚编号模式,表示使用 **Broadcom SOC Channel(BCM)编号系统**。这是树莓派GPIO编程中两种主要引脚编号模式之一:
```python
GPIO.setmode(GPIO.BCM) # 设置使用BCM编号模式
```
### BCM模式特点:
1. **基于芯片寄存器编号**:使用Broadcom芯片的原始GPIO编号(如GPIO17、GPIO18等)
2. **与物理位置无关**:编号对应芯片内部的寄存器通道,不直接对应板子上的物理引脚位置
3. **版本兼容性**:不同树莓派型号的BCM编号保持一致(如GPIO17在所有型号中都相同)
### 对比 BOARD 模式:
- **BOARD模式**:使用物理引脚位置编号(1-40),与树莓派板子上的实际引脚位置对应
- **BCM模式**:使用芯片寄存器编号(GPIO0-GPIO27等),与物理位置无关
### 在代码中的作用:
当使用 `GPIO.setmode(GPIO.BCM)` 后,后续所有引脚操作都使用BCM编号:
```python
GPIO.setup(17, GPIO.IN) # 这里的17是BCM编号的GPIO17
```
### 示例对应关系(树莓派4B):
| BCM编号 | 物理引脚 | 功能 |
|---------|----------|------|
| GPIO17 | 引脚11 | 通用IO |
| GPIO18 | 引脚12 | 通用IO |
| GPIO27 | 引脚13 | 通用IO |
阅读全文
相关推荐



















