2. 在 MicroPython REPL 中交互

REPL 是 Read Evaluate Print Loop 的缩写(代表 “读取-求值-输出” 循环,也被称作交互式顶层构件),它是交互式 MicroPython 提示的名称,你可以通过 Zephyr 在开发板上直接使用它。推荐使用 REPL 来测试你的代码和运行命令。

2.1. 在串口上的 REPL

REPL 可以在开发板的设备树上声明的 zephyr,console 节点所代表的 UART 串口外设上使用。REPL 的串口波特率为 115200 。如果你的开发板有一个 USB-串口 转换器,那么你可以直接通过它连接到 PC 来使用 REPL

你需要一个终端模拟器程序来通过 USB-串口 访问 REPL。对于一个 Linux 或 Mac 设备,打开终端并运行:

screen /dev/ttyACM0 115200

如果不用 screen 的话,你也可以试试 picocomminicom 。你可能需要用 /dev/ttyACM1 或一个更大的 ttyACM 数字。访问此设备可能需要额外的权限 (例如,uucp 组或 dialout 组,又或者使用 sudo )。对于 Windows 的话,则应使用一个终端软件,例如 PuTTY 来通过串口会话连接到对应的 COM 端口。

2.2. 使用 REPL

通过你的串口程序(PuTTY, screen, picocom 诸如此类)打开串口后,你应当看到了一个带有闪烁光标的空白屏幕。按下回车(或重启开发板)后,你应该能看到以下内容:

*** Booting Zephyr OS build zephyr-v2.7.0  ***
MicroPython v1.17-288-gb695f5a70-dirty on 2022-01-03; zephyr-frdm_k64f with mk64f12
Type "help()" for more information.
>>>

现在你可以尝试在你的开发板上直接运行 MicroPython 代码了。

你在交互过程输入的、跟着 >>>` 后的任何东西,都会在你按下回车键后执行。如果你输入的内容中包含了错误,那么错误信息也会被打印出来。

现在开始,先确保以下内容输入后可以正确运行:

>>> print("hello world!")
hello world!

如果你已经了解过一些 python 的知识,那么你可以在这里尝试一些基本的命令了。例如:

>>> 1 + 2
3
>>> 1 / 2
0.5
>>> 3 * 'Zephyr'
ZephyrZephyrZephyr

如果你的开发板有一个 LED 灯,你可以使用以下代码使其闪烁:

>>>import time
>>>from machine import Pin

>>>LED = Pin(("GPIO_1", 21), Pin.OUT)
>>>while True:
...    LED.value(1)
...    time.sleep(0.5)
...    LED.value(0)
...    time.sleep(0.5)

上述代码使用 FRDM-K64F 板的 LED 位置(端口 B,引脚 21;遵循 Zephyr 约定,端口由 “GPIO_x” 标识,其中 x 从 0 开始)。当你使用另一块开发板时,你需要根据对应开发板的参考材料来调整相关引用。