硬件讲解
MCU的基本概念和结构
在开始了解树莓派 Pico 的 GPIO 之前,咱们先把几个核心的 "硬件基础概念" 用简单的话语进行讲解,树莓派Pico是一款MCU开发板,你可以把 MCU(微控制器)理解成一台超迷你的专用电脑------ 它不像咱们的台式机 / 笔记本能做很多事儿,但能专门负责控制某个电子设备(比如智能灯、遥控器,或是你用树莓派 Pico 做的小玩具):比如你用 Pico 控制 LED 亮灭,这个 "发命令、管执行" 的核心,就是 MCU。
MCU(微控制器)广泛用于控制所有类型的电子设备,MCU 由 CPU(中央处理单元)、存储器和实现各种外设支持功能的附加电路组成:
- CPU(处理单元): CPU通过读取程序并执行指令来进行操作,指令包括读取数据、进行计算和比较、根据比较结果生成其他运算等;简单来说,它负责 "思考和发命令,比如判断 "现在是不是该让 LED 亮了"、"计算传感器的数据是多少",你写的所有程序代码,都是 CPU 来执行的。
- 内存(存储器): 存储器的作用包括存储数据(比如读取温度传感器采集到的数值)和存储程序本身;
- 外设(MCU的 "手脚 + 感官"): 外设可以实现例如模数转换、信号输入输出、时间测量和时间监控和主机通信等功能,它负责 "干具体的活":比如
- 想让 LED 亮?靠 GPIO(输入输出外设)当 "手" 去控制电路;
- 想读温度?靠 ADC(模数转换外设)当 "感官",把传感器的模拟信号转成 CPU 能懂的数字;
- 想和电脑传数据?靠 UART/USB(通信外设)当 "嘴巴耳朵"。
外设和内存、CPU通过总线连接,总线就像 MCU 内部的 "高速公路":

所有数据、指令的传输,都得通过总线 "跑":比如 CPU 要让 GPIO 点亮 LED,就得通过总线把 "亮灯命令" 传到 GPIO 外设;外设读到的传感器数据,也得通过总线传给 CPU。
树莓派Pico的总线结构如下:

可以看到,内核0和内核1通过AHB高速总线矩阵结构,连接到DMA单元、SRAM内存单元、APB总线桥和一些高速外设上(如FLASH XIP、PIO、USB等)。APB总线桥连接到了APB总线上,APB总线挂载了其他的低速外设,如:串口、SPI、IIC、ADC、PWM、定时器、看门狗、RTC实时时钟等。
当我们想使用某个外设完成特定功能时,比如控制GPIO点亮一个LED灯,**本质上是在操作 "寄存器":**它是CPU 内,或是 GPIO、ADC 这些外围电路里的 "特殊专用存储电路",是一种超高速的临时存储单元 ------ 速度比常规内存快得多,但因为芯片内部空间太宝贵,它的数量很少(不像内存能存很多东西);每个外设(比如 GPIO、定时器)都对应着几个 "专属寄存器",CPU 想控制哪个外设,就直接找它对应的寄存器就行。

寄存器可以分为以下两种:
- 特殊寄存器:有专门的固定用途,不能随便用 ------ 比如控制 GPIO 针脚的寄存器,就是专门管 IO 口的 "专属抽屉",只能用来设置 GPIO 的输入输出、高低电平;管定时器的寄存器,就只负责设置定时时间。
- 通用寄存器:是 CPU 自己的 "临时工作台",用来存计算结果、CPU 当前的执行状态这些信息,程序员可以灵活用它辅助程序运行。
CPU 控制外设就是通过读写外设对应的特殊寄存器来发命令或者读数据:
- 想让 GPIO 某一针脚输出高电平?找到 "GPIO 输出控制" 这个寄存器,往对应的位置写个 "1" 就行;
- 想读 ADC 的传感器数据?直接读 "ADC 数据" 这个寄存器里存的数值就行。

树莓派Pico的GPIO概要信息
树莓派Pico的IO口功能介绍
简单来说,树莓派Pico有26个可用引脚引出到了外部排针上,GPIO 0到GPIO 22支持数字信号的输入和输出(采用TTL电平标准:高电平为3.3V左右,低电平为0V左右),GPIO 26到28为模拟信号输入引脚。
