|
几乎所有 STM32 入门者都会困惑: 👉 STM32 到底有多少个引脚? 我们来系统、工程化地讲清楚。 🧩 一、STM32 引脚数量 ≠ 功能数量 STM32 芯片的 “引脚数量” 是指 物理脚位 数量(例如 48 脚、64 脚、100 脚封装等); 例如:
🧮 二、命名规则:端口 + 引脚编号 STM32 的 GPIO 命名遵循统一规则: 名称部分 含义 端口号表示 GPIO 组(如 GPIOA、GPIOB、GPIOC 等) 引脚号表示该端口内的第几个引脚(0–15) 📘 每个端口最多有 16 个引脚(0~15),但并非所有芯片型号都完整引出。 例如:
👉 即使 GPIOA 的第 0 引脚与 GPIOB 的第 0 引脚编号相同,
⚙️ 三、每个引脚的多功能设计(复用功能) STM32 的引脚通常具备多达 3~5 种功能,这是通过 复用功能机制(Alternate Function, AF) 实现的。 🔹 举例: GPIOA 的第 9 引脚(GPIOA Pin 9)可以被配置为:
这些都是通过设置引脚的 复用模式寄存器(AFR) 来决定的。 示例代码: GPIO_InitStruct.Pin = GPIO_PIN_9;GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; // 复用推挽输出 GPIO_InitStruct.Alternate = GPIO_AF7_USART1; // 指定复用功能 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
🔩 四、复用冲突的现实例子 如果两个外设复用了同一个引脚:
🧠 工程思路:
🧰 五、引脚唯一索引的计算 从软件层面看,GPIO(端口) + Pin(编号) 组合已经是唯一索引。 你可以把「端口号」映射为数字编号,并计算唯一索引: 端口 数字编号 索引公式 GPIOA0(0 × 16 + PinNum) GPIOB1(1 × 16 + PinNum) GPIOC2(2 × 16 + PinNum) GPIOD3(3 × 16 + PinNum) GPIOE4(4 × 16 + PinNum)
🧭 六、命名设计逻辑 STM32 的引脚命名体系体现了四个设计理念: 设计目标 说明 统一架构Cortex-M 系列 GPIO 模块均支持 16 位端口结构 模块化封装不同封装型号可裁剪端口数量以匹配封装尺寸 灵活复用外设数量多于引脚数量,通过 AF 机制实现最大兼容 硬件隔离同一时间仅一种功能有效,避免电气冲突 🔎 七、快速总结 概念 含义 物理引脚封装上的真实金属脚 GPIO 端口GPIOA~GPIOE,每组最多 16 个引脚 逻辑编号GPIOx Pin_y,用于软件访问 复用功能同一引脚可被多个外设共享,通过寄存器选择 冲突机制一个引脚不能被多个功能同时使用 唯一索引端口号 × 16 + 引脚号,保证全局唯一性 🌟 八、示例(STM32F103C8T6) 引脚 功能1 功能2 功能3 GPIOA Pin 9GPIOUSART1_TXTIM1_CH2 GPIOA Pin 10GPIOUSART1_RXTIM1_CH3 GPIOB Pin 6GPIOI2C1_SCLTIM4_CH1 GPIOB Pin 7GPIOI2C1_SDATIM4_CH2 在实际工程中:
📘 九、一句话记忆法
|
微信公众号
手机版