X:000 · Y:000SECTOR / AIv0.9.SIGNALNO_ADS // NO_TRACK
CILLIAN.AI
← MEMORY

嵌入式 MCU 基础:GPIO、总线、PWM 与别烧板

读数据手册之前先掌握的概念:MCU 怎么跑起来、常用外设、电平与供电、裸机 vs RTOS、最小实验清单。

2 MIN READ~1900 CHARS
嵌入式 MCU 基础:GPIO、总线、PWM 与别烧板

嵌入式入门不需要先背完一本寄存器手册,但有一批概念绕不开:程序怎么跑、外设干什么、怎样不烧掉板子。本文对应机器人栈里的「实时控制层」,系列入口见 机器人栈分层

MCU 程序怎么跑起来

典型上电流程(简化):

  1. 复位:CPU 从复位向量取指令
  2. 初始化时钟、GPIO、外设
  3. 进入 main / loop
  4. 中断到来时跳进 ISR,处理完再回去

和桌面程序的差别:

  • 没有完整 OS 服务(很多板子是裸机或轻量 RTOS)。
  • 程序通常烧录进 Flash,掉电还在。
  • 资源紧:RAM/Flash 以 KB~几百 KB 计。
  • Bug 表现常常是看门狗复位、卡死、外设配错——不一定有漂亮堆栈。

必会外设(按出现频率)

外设 干什么 机器人里常见用途
GPIO 高低电平输入输出 LED、按键、继电器、片选
UART 串口异步通信 调试打印、接主机 / 模组
I2C 两线总线,多设备 OLED、部分 IMU、EEPROM
SPI 高速同步总线 Flash、部分屏 / 传感器
PWM 脉冲宽度调制 舵机、直流电机调速、灯光
ADC 模拟→数字 电位器、部分模拟传感器
定时器 精确计时 / 触发 控制环节拍、输入捕获测速
中断 事件来了再处理 编码器边沿、急停、串口收包

建议顺序:GPIO → UART → 定时器/PWM → ADC → I2C/SPI → 中断

电压、电平与「烧掉板子」

  • 常见逻辑电平:3.3V(STM32/ESP32 多数)与 5V(部分 Arduino / 外设)。
  • 不要默认都能直接互连:5V 推到 3.3V 引脚可能损坏。
  • 电机、舵机往往要独立供电,逻辑地与功率地正确共地,避免 USB 口扛大电流。
  • 面包板适合信号,不适合大电流电机回路。

开发方式速览

方式 代表 特点
Arduino IDE / 框架 Uno、部分 ESP32、STM32 核心 上手快,setup/loop,库多
厂商 IDE + HAL STM32CubeIDE、Keil 等 工业向,外设配置器强
ESP-IDF ESP32 官方 FreeRTOS、Wi‑Fi/BLE 完整
PlatformIO VS Code 生态 多平台工程化友好
MicroPython 等 ESP32 等 试验快,实时性弱于 C

入门可用 Arduino 框架建立成就感;要深入 STM32 时钟树与外设,再转 Cube / 寄存器。板型怎么选见 选板指南

裸机 vs RTOS(先有印象)

  • 裸机:一个大循环 + 中断。简单项目够用。
  • RTOS(如 FreeRTOS):多任务、队列、延时;ESP-IDF 默认就带。
  • 硬实时控制对抖动敏感:不是「上了 RTOS 就自动实时」。

ROS 2 跑在 Linux 上,和 MCU 里的 FreeRTOS 不是同一层东西

「Arduino」到底指什么

讨论时要拆开:

  1. 生态 / 框架(Arduino API)
  2. 某块具体板(Uno、Mega…)
  3. 板上的 MCU(ATmega328P 等)

所以「学 Arduino」≠「只学一种芯片」;很多 ESP32 / STM32 板也能用 Arduino 框架烧录。

最小实验清单

  1. 闪烁 LED(GPIO + 延时)
  2. 串口打印 Hello(UART)
  3. PWM 驱动舵机到 0°/90°/180°
  4. I2C 读一个传感器并打印
  5. 外部中断:按键触发翻转 LED
  6. (进阶)电机 + 编码器粗测转速

完整周计划见 机器人学习路径

相关阅读

RELATED

NEXT STEP

本篇已归档到 MEMORY。继续解码相邻信号,或回到档案首页。