GPIO、定时器与总线外设实践要点

📅 2026-09-04
#来源/立芯星球 #类型/专题提炼 #技术/GPIO #技术/定时器 #技术/I2C #技术/SPI

GPIO、定时器与总线外设实践要点

本专题合并星球中 GPIO 配置、定时器用法与 I2C/SPI 总线外设的问答,作为《STM32启动流程与存储常见问题速查》的姊妹篇。

一、GPIO 复用与重映射

复用与重映射的关系一句话讲清:重映射 = 先决定外设信号走到哪个引脚;复用 = 再让该引脚切到外设功能。凡是要改映射/EXTI 路由类寄存器,就要开对应的 AFIO/SYSCFG/AF 时钟;单纯把 GPIO 设为输入输出只需 GPIO 时钟。工程上最稳妥的顺序是:先配 remap/mux → 再配 GPIO AF → 再开外设输出,避免"波形跑到别的脚"或"脚还没接上外设就开始翻转"(1.重映射 = 先决定这外设信,深蓝 提问 / Jack 答)。

调试口与 GPIO 冲突是量产板常见问题:

二、定时器与延时

三、I2C 与 I3C

  • 基础:I2C 要加上拉电阻的原因、面试回答思路见 1、 IIC通信简介(立芯嵌入式);仲裁机制:两主机同时发送,电平不同时发送高电平的一方检测到冲突退出、转接收模式,发送低电平的一方继续完成传输(IIC仲裁简单描述是怎么样的?,Jack)。
  • I3C(MIPI 接班人)关键差异(很多人都会用 I2C,目前 I3C 也正在普及和落地,带大家前沿看一下 I3C,Jason):带内中断 IBI 省掉独立中断引脚;默认 SDR 12.5Mbps,HDR 最高 37.5Mbps;主机动态分配地址、兼容老 I2C 从机(不支持 10 位扩展地址);推挽输出增强驱动、不支持时钟拉伸。Linux 5.10 起原生有 I3C 驱动(/drivers/i3c/),靠 BCR/DCR/LVR 寄存器和 CCC 通用指令管理设备。
  • 总线争用:RTOS 下硬件 IIC 被中断和主循环同时使用会互相阻塞(平衡车项目真实案例:中断里读陀螺仪时屏幕正占用 IIC,想问一个问题: 最近我在做一个,少年、潜行 提问)——这正是 BSP 层 Handler 统一管理总线互斥的意义,参见 BSP分层设计与驱动架构

四、SPI

五、器件与硬件小抄

来源笔记