- 嵌入式
- 语言运行时
- 编程语言
- 解释器
- 编译器
- 物联网
- 系统编程
【免费下载链接】micropython
MicroPython - a lean and efficient Python implementation for microcontrollers and constrained systems
MicroPython 的 pyboard 是一块以 STM32F405RG 为核心的开发板,本文是 pyboard 官方教程系列(docs/pyboard/tutorial/index.rst)的开篇,围绕「认识硬件、正确供电、安全上电」展开,并结合本仓库的 stm32 移植源码与后续教程,帮助你在拿到板子后 5 分钟内完成首次通电、理解启动流程,并为后续编写并运行第一个 MicroPython 脚本做好准备。读完本文,你将掌握 pyboard 的板载资源布局、USB 与外部电源两种供电方式及电压限制、启动模式(标准/安全/文件系统重置)与常见故障的复位恢复手段。
硬件布局:一眼看懂 pyboard 上的关键元件
在动手之前,先熟悉 pyboard 的物理布局。以最常见的 pyboard 1.x 系列为例,板面元件分布如下:
- micro USB 连接器位于板的右上角,是供电与数据通信(USB 串口 + USB 大容量存储)的唯一入口;
- micro SD 卡槽位于板的左上角,插入 SD 卡后可作为扩展存储;
- 4 颗 LED位于 SD 卡槽与 USB 连接器之间,颜色从下到上依次为红、绿、橙、蓝;
- 2 个开关:右侧是RST(复位)开关,左侧是USR(用户)开关。
这些板级细节在源码中有明确对应。查看 pyboard 参考板的移植配置 ports/stm32/boards/PYBV11/mpconfigboard.h,可以看到四颗 LED 的硬件引脚定义:
#define MICROPY_HW_LED1 (pin_A13) // red #define MICROPY_HW_LED2 (pin_A14) // green #define MICROPY_HW_LED3 (pin_A15) // yellow #define MICROPY_HW_LED4 (pin_B4) // blue #define MICROPY_HW_LED3_PWM { TIM2, 2, TIM_CHANNEL_1, GPIO_AF1_TIM2 } #define MICROPY_HW_LED4_PWM { TIM3, 3, TIM_CHANNEL_1, GPIO_AF2_TIM3 } #define MICROPY_HW_LED_ON(pin) (mp_hal_pin_high(pin)) #define MICROPY_HW_LED_OFF(pin) (mp_hal_pin_low(pin))这段代码同时印证了教程中反复提到的一个细节:黄色(LED3)和蓝色(LED4)两颗 LED 支持 PWM 调光(对应教程 docs/pyboard/tutorial/leds.rst 中的intensity()方法),而红、绿两颗只能开关。用户开关 USR 的定义也在此文件中:
#define MICROPY_HW_USRSW_PIN (pin_B3) #define MICROPY_HW_USRSW_PULL (GPIO_PULLUP) #define MICROPY_HW_USRSW_EXTI_MODE (GPIO_MODE_IT_FALLING) #define MICROPY_HW_USRSW_PRESSED (0)即 USR 开关接在 B3 引脚上、内部上拉、下降沿触发外部中断——这正是教程 docs/pyboard/tutorial/switch.rst 中sw.callback()中断回调机制的底层来源。
日常保养:保护裸露的电路板
pyboard 没有外壳,硬件裸露在外,使用中需要留意以下几点:
- USB 插拔要轻柔:micro USB 连接器是通孔焊接在板上的,虽然相对牢固,但一旦脱落修复非常困难;
- 警惕静电:静电可能击穿板上的元器件。如果你所在的地区气候干燥寒冷、静电频繁,请格外小心。如果 pyboard 原配了黑色塑料盒,那是最好的收纳与携带方式——它由导电塑料制成、内部有导电泡沫,是一个防静电盒;
- 软件几乎不可能弄坏硬件:放心大胆地写代码测试即可。如果文件系统损坏,可以按下文的方法重置;最坏的情况下也只需通过 USB 重新烧写 MicroPython 固件。
USB 供电与首次上电
pyboard 通过micro USB 接口供电。用一根 micro USB 线连接到 PC,注意接口只有一个方向能插进去,不会插反。连接后,板上的绿色 LED 会快速闪烁,表示系统正在启动。
从启动时序上看,一次上电(硬复位)遵循固定的引导序列,完整说明见 docs/reference/reset_boot.rst:板载_boot.py(烧录在固件中,用于首次格式化内部闪存文件系统等初始化)→ 执行可编辑的boot.py→ 初始化 USB → 执行main.py→ 若main.py不存在或退出,则进入 REPL 交互解释器。更通俗的描述见 docs/pyboard/general.rst 的“Boot modes”一节:标准模式下先执行boot.py,然后配置 USB,最后运行main.py。
首次连接 PC 时,pyboard 会以USB 大容量存储设备的形式出现(Windows 下是可移动 U 盘、Mac 下桌面出现名为PYBFLASH的磁盘、Linux 下自动挂载,可用lsblk查看后mount挂载)。这个盘在 pyboard 内部称为/flash,出厂时包含 4 个文件:
boot.py—— 各种配置选项,开机时执行;main.py—— 要运行的 Python 程序,在boot.py之后执行;README.txt—— 入门指引,可安全删除;pybcdc.inf—— Windows 下配置 USB 串口设备的驱动文件(详见 docs/pyboard/tutorial/repl.rst)。
/flash是 pyboard 内部闪存上的文件系统;如果插入了 micro SD 卡,它会以/sd挂载,并且优先从 SD 卡启动(boot.py、main.py从 SD 卡查找)。若希望强制从内部闪存启动,可在/flash下创建一个名为SKIPSD的空文件,此时 SD 卡不会自动挂载,但仍可在程序中用vfs.mount手动挂载。需要特别提醒的是:在复位 pyboard 之前,务必先弹出(Linux 下为卸载)USB 盘,否则可能损坏文件系统。
外部电源供电:VIN 与 GND
除了 USB 供电,pyboard 还可以通过电池或其他外部电源供电,接线到板上的 VIN 与 GND 引脚。
务必注意:电源的正极接VIN,负极(地)接GND。pyboard没有极性保护,接反会损坏板子,接线时必须万分小心。
输入电压必须在 3.6V 与 10V 之间。
3.6V 的下限意味着单节锂电池(标称 3.7V,充满约 4.2V)即可供电;10V 的上限说明常见的 5V USB 电源、9V 适配器都在安全范围内。超出该范围会给板载稳压电路带来风险。
如果你希望进一步控制功耗,pyboard 还提供软件层面的电源管理手段(详见 docs/pyboard/tutorial/power_ctrl.rst):
while True: do_some_processing() pyb.wfi() # 等待中断等事件时降低功耗以及调节 CPU 主频:
pyb.freq(30000000) # 将 CPU 频率设为 30MHzpyb.freq()可在功耗与性能之间做权衡,pyb.wfi()则让 CPU 在等待事件(如外部中断)时进入低功耗等待状态,非常适合电池供电的场景。
启动模式:标准、安全与文件系统重置
pyboard 支持通过「按住 USR 开关 + 按 RST 复位」的方式进入不同启动模式,选择依据是上电时 LED 的二进制计数。操作要点(详见 docs/pyboard/general.rst 与 docs/pyboard/tutorial/reset.rst):
- 连接 USB 使 pyboard 上电;
- 按住USR开关;
- 保持按住 USR,同时按下并松开RST开关;
- 此时 LED 会在「绿 → 橙 → 绿+橙」之间循环;
- 在 LED 显示到目标模式时松开 USR,对应模式的 LED 会快速闪烁 4 次,板子随即以该模式启动。
三种模式如下:
| 模式 | LED 指示 | 行为 |
|---|---|---|
| 标准启动 | 仅绿色 LED | 依次执行boot.py与main.py |
| 安全模式 | 仅橙色 LED | 不执行任何启动脚本,跳过boot.py/main.py,以默认 USB 设置启动 |
| 文件系统重置 | 绿色 + 橙色 LED | 将内部闪存文件系统恢复出厂状态,然后以安全模式启动 |
其中安全模式用于排障:它临时跳过boot.py和main.py,板子以默认设置启动,USB 盘正常出现,你可以编辑修复这两个文件。安全模式是临时的,不会改动板上文件。
文件系统重置则用于两类场景:文件系统损坏(例如忘记弹出/卸载 USB 盘),或boot.py/main.py中写入了导致你无法脱身的代码。该操作会删除 pyboard 内部存储(不包含 SD 卡)上的所有文件,并把boot.py、main.py、README.txt、pybcdc.inf恢复为出厂状态。重置完成后会停留在安全模式,按一次 RST 即可恢复正常启动。
如果板子已经无法正常启动(俗称“软砖”),可参考 docs/reference/reset_boot.rst 中的恢复手段:多数情况下打开 REPL 串口按Ctrl-C注入KeyboardInterrupt即可让脚本退出并进入 REPL,然后用import os; os.remove('main.py')删除出问题的文件;若 REPL 不可用,再考虑安全模式与文件系统重置。
复位方式与错误指示
日常调试中你会频繁用到两种复位:
- 软复位:在 MicroPython REPL 提示符下按Ctrl-D,解释器会清理 Python 环境并重新启动,打印
MPY: soft reboot之类的信息后回到>>>提示符(见 docs/pyboard/tutorial/repl.rst); - 硬复位:按板上的RST 开关(靠近 micro USB 插座的小黑按钮),相当于断电重开,会断开当前的串口连接程序。
pyboard 还通过 LED 组合报告启动错误(见 docs/pyboard/general.rst 的“Errors: flashing LEDs”一节):
- 红色与绿色 LED 交替闪烁:某个 Python 脚本(如
main.py)运行出错,请进入 REPL 调试; - 四颗 LED 缓慢循环点亮:发生了硬故障(hard fault),无法恢复,只能做一次硬复位。
上电之后:下一步该做什么
完成通电验证后,建议按官方教程顺序继续探索:
- 编写并运行第一个脚本:编辑
main.py写入import pyb+pyb.LED(4).on(),保存弹出后按 RST 运行,见 docs/pyboard/tutorial/script.rst; - 进入 REPL 交互式执行代码(
print("hello pyboard!")、1+2、pyb.LED(1).on()等),见 docs/pyboard/tutorial/repl.rst; - 玩转四颗 LED:开关、
toggle()、intensity()调光与“迪斯科”循环,见 docs/pyboard/tutorial/leds.rst; - 使用 USR 开关与中断回调
sw.callback(...),见 docs/pyboard/tutorial/switch.rst。
需要额外硬件(舵机、LCD 皮肤、音频放大皮肤等)的进阶实验,以及防抖、USB 透传等技巧,可继续翻阅 docs/pyboard/tutorial/index.rst 中的其余章节。
- 嵌入式
- 语言运行时
- 编程语言
- 解释器
- 编译器
- 物联网
- 系统编程
【免费下载链接】micropython
MicroPython - a lean and efficient Python implementation for microcontrollers and constrained systems
相关推荐
MicroPython `pyb` 模块完全指南:pyboard 板级时间、复位、中断、电源与 USB 控制
MicroPython pyb 模块完全指南:pyboard 板级时间、复位、中断、电源与 USB 控制 导读 pyb 是 MicroPython 中专门面向
嵌入式语言运行时编程语言解释器编译器物联网系统编程MicroPython on ESP8266 入门实战:固件选择、烧录部署与首次启动配置全指南
MicroPython on ESP8266 入门实战:固件选择、烧录部署与首次启动配置全指南 本指南以 MicroPython 官方 ESP8266 入门教程
嵌入式语言运行时编程语言解释器编译器物联网系统编程双击txt不再打开Notepad--了?两步自检 + 分级修复路径找回文件关联
双击txt不再打开Notepad 了?两步自检 + 分级修复路径找回文件关联 双击一个txt,Notepad 不再像以前那样弹出来,而是跳到别的程序、或者干脆没
桌面应用
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考