你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32 引脚到底有多少?为什么一个引脚能当好几个用?

[复制链接]
flyingstar 发布时间:2026-1-6 19:08

几乎所有 STM32 入门者都会困惑:

👉 STM32 到底有多少个引脚?- X$ Q% P" U! }" I
👉 GPIOA 的第 0 引脚和 GPIOB 的第 0 引脚是不是重复?% t1 o/ y% g! Z5 K0 K. I! t
👉 为什么一个引脚能有好几种功能却不会冲突?

我们来系统、工程化地讲清楚。


🧩 一、STM32 引脚数量 ≠ 功能数量

STM32 芯片的 “引脚数量” 是指 物理脚位 数量(例如 48 脚、64 脚、100 脚封装等);
) p! M& b5 u& S9 f( a而 “引脚功能” 是指 逻辑功能(GPIO、UART、I2C、ADC、TIM、SPI 等)。

例如:

  • STM32F103C8T6 是 48 引脚封装;

  • 实际可用 GPIO 约 37 个;

  • 但每个引脚可以有多种复用功能,所以总“功能数” > 物理引脚数。


    7 i% a9 U) j! c/ T; N

🧮 二、命名规则:端口 + 引脚编号

STM32 的 GPIO 命名遵循统一规则:

名称部分
含义
2 v2 R# X  T6 P/ M) ?
端口号表示 GPIO 组(如 GPIOA、GPIOB、GPIOC 等)
8 M0 x% I, H4 O8 E- W0 h' u- W( `引脚号表示该端口内的第几个引脚(0–15)

📘 每个端口最多有 16 个引脚(0~15),但并非所有芯片型号都完整引出。

例如:

  • STM32F103C8T6:具有 GPIOA~GPIOC,共 3×16=48 引脚,但部分未封装;

  • STM32F407:具有 GPIOA~GPIOI,可达 144 引脚封装。

    # M& ?' \6 T9 O  {/ b! I

👉 即使 GPIOA 的第 0 引脚与 GPIOB 的第 0 引脚编号相同,
" E8 |" z3 O, b) u& n它们仍是不同的物理引脚,由不同端口寄存器控制,互不干扰。

微信图片_2026-01-06_190630_229.png
; l$ b! _  X8 U" ~/ P
3 ~" g% U; }: m6 D4 ? 微信图片_2026-01-06_190634_640.png
% X6 x# N4 d, v; A8 O
* i; S2 ^5 P& X3 I4 T( m

( d* F! `3 j4 x# b' T! v


⚙️ 三、每个引脚的多功能设计(复用功能)

STM32 的引脚通常具备多达 3~5 种功能,这是通过 复用功能机制(Alternate Function, AF) 实现的。

🔹 举例:

GPIOA 的第 9 引脚(GPIOA Pin 9)可以被配置为:

  • 普通 GPIO 输出;

  • 串口 USART1_TX;

  • 定时器 TIM1_CH2;

  • I2C_SCL(部分型号)。


    7 y2 A+ C) r9 g3 i" w; B. f

这些都是通过设置引脚的 复用模式寄存器(AFR) 来决定的。

示例代码:

GPIO_InitStruct.Pin = GPIO_PIN_9;4 t( s- E# T. |+ [0 E5 x' @
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;  // 复用推挽输出
" H2 @* j( Q7 Q  u2 {6 B6 y2 fGPIO_InitStruct.Alternate = GPIO_AF7_USART1; // 指定复用功能2 C+ X; S- D/ T6 q+ ^0 Y! u0 a6 K
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
" E  Y( s- u& i8 N5 k6 p

✅ 不会冲突的原因:

  • 引脚在任意时刻只能工作在一种模式下;

  • 即便它支持多种功能,只有在你通过寄存器选定的那个功能才生效;

  • 其他功能逻辑上“断开”。

    / k* h6 v% c' |) j

🔩 四、复用冲突的现实例子

如果两个外设复用了同一个引脚:

  • 比如 USART1_TX 和 TIM1_CH2 都需要 GPIOA Pin 9;

  • 你只能选择其中一个外设使用;

  • 另一个就无法启用(CubeMX 会提示冲突)。


    % n+ m2 f- n# F0 q) F; p& e0 \

🧠 工程思路:

  • 打开 CubeMX;

  • 选定你想启用的外设;

  • CubeMX 自动分配可用引脚;

  • 若冲突会提示红色警告,要求你更换脚位。

    - _6 K; w+ y7 J' Q
微信图片_2026-01-06_190638_920.png
. K9 ?! H0 p( m- X# C. V6 i

* j0 \$ ?2 y) m) d9 p$ _$ w- P% q2 z& u& C


🧰 五、引脚唯一索引的计算

从软件层面看,GPIO(端口) + Pin(编号) 组合已经是唯一索引。

你可以把「端口号」映射为数字编号,并计算唯一索引:

端口
数字编号
索引公式
$ H% S, |/ M" k2 w1 U
GPIOA0(0 × 16 + PinNum)7 \; s3 {* A& f3 S" i" b! u8 K
GPIOB1(1 × 16 + PinNum)0 {' b. {. y1 X( J
GPIOC2(2 × 16 + PinNum)+ u0 _0 N+ a4 a$ t1 s
GPIOD3(3 × 16 + PinNum)
, `0 c; i2 y: `2 c' BGPIOE4(4 × 16 + PinNum)

例如:

  • GPIOA Pin 3 → index = 3

  • GPIOB Pin 0 → index = 16

  • GPIOC Pin 15 → index = 47


    - e. Y% f* r( y% _

这样软件就能用统一编号管理所有引脚。


🧭 六、命名设计逻辑

STM32 的引脚命名体系体现了四个设计理念:

设计目标
说明

0 l) J2 c2 W7 D8 U统一架构Cortex-M 系列 GPIO 模块均支持 16 位端口结构9 {+ [- l$ H7 L3 m1 ?3 |
模块化封装不同封装型号可裁剪端口数量以匹配封装尺寸3 r2 y3 `% ?7 v+ s4 P
灵活复用外设数量多于引脚数量,通过 AF 机制实现最大兼容
. F5 a/ {' Z$ r: u5 y硬件隔离同一时间仅一种功能有效,避免电气冲突
🔎 七、快速总结
概念
含义

0 j6 ^5 E2 u& X7 n; c物理引脚封装上的真实金属脚/ I) |+ v7 ~5 b( V" v- z
GPIO 端口GPIOA~GPIOE,每组最多 16 个引脚' I- y) M) S7 ~7 l$ R3 _  m( c
逻辑编号GPIOx Pin_y,用于软件访问
2 n5 c6 Q; s, m复用功能同一引脚可被多个外设共享,通过寄存器选择' S: E0 {5 E2 h7 L
冲突机制一个引脚不能被多个功能同时使用; e2 C; I; _3 B( ~; Q
唯一索引端口号 × 16 + 引脚号,保证全局唯一性
🌟 八、示例(STM32F103C8T6)
引脚
功能1
功能2
功能3
+ @2 q/ D5 K* w5 g& N. o6 }6 l
GPIOA Pin 9GPIOUSART1_TXTIM1_CH2
1 U/ R5 D5 ~1 D" Q+ Y% N) C8 }$ mGPIOA Pin 10GPIOUSART1_RXTIM1_CH3
5 K6 R1 r( J" Y* t* RGPIOB Pin 6GPIOI2C1_SCLTIM4_CH1
# b, e. ~' ?; y( u, tGPIOB Pin 7GPIOI2C1_SDATIM4_CH2

在实际工程中:

  • 若使用串口 1,则配置 GPIOA 的第 9、10 引脚;

  • 若使用 I2C1,则配置 GPIOB 的第 6、7 引脚;

  • 两者不可同时复用。

    " k7 {+ }8 n6 [( y# \

📘 九、一句话记忆法

“每个引脚可以叫很多名字,但在同一时间只穿一套衣服。”

赞 收藏 评论0 发布时间:2026-1-6 19:08

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版