一、秒表计时
第1课 定制中断测试

一、任务目标
定时器按固定周期插入回调:体验题主循环几乎空转,控制台仍约每秒打印一次开机毫秒数;完整代码把累加送到点阵,做成会自己走的计时。
二、我们要学什么
- 学习要点:定时器中断:period 一到就进回调,不必让主循环一遍遍去问「到点了没有」
- 本课过关:能指出回调与主循环各干什么;改 period 后,打印或点阵读数的疏密明显变化。
- 示例对齐:体验题对应 「1-1-1 定制中断测试」;完整代码对应 「1-1-2 简单计时器」。
三、本节要点
本节抓住「定时器回调」。体验 1-1-1 只打印 ticks_ms;点阵上的秒表数字是完整代码 1-1-2。
四、解题思路
- 输入:本课体验不依赖按键;完整代码仍由定时器自己累加。
- 输出:体验:控制台约每秒一行毫秒数。完整代码:点阵显示「计时」。
- 生活对照:闹钟到点自己响,不必你盯着表问「到了没有」。
- 验证现象:主循环是 pass 时控制台仍出数;改 period=1000 为更小,打印更密。
本课主要用到:定时器、串口打印;完整代码另用点阵屏。
- 1明确任务「定制中断测试」:先看控制台节拍,再对照完整代码的点阵计时。
- 2说清定时器三要素:谁(Timer 0)、多久一次(period)、到点做什么(callback)。
- 3主循环用 while True: pass 占住程序,回调才能一直被触发。
- 4载入后先运行看打印间隔;完整代码再看点阵数字是否每秒加一。
流程示意(可对照左侧文字)
五、图形块功能讲解
下面只列出本课首次出现的 Mixly 图形块(真积木截图)。已在前面课讲过的不再重复;先认新块,再点「载入」对照拖搭。
| 图形块 | 分类 | 作用 | 本课用法 |
|---|---|---|---|
![]() | 控制 | 按固定周期触发回调,适合节拍、采样。 | 体验:Timer(0, period=1000) 回调打印 ticks_ms。 |
![]() | 控制 | 按条件反复执行内部积木;条件为「真」时相当于 while True 无限循环。 | 体验:主循环 pass,让定时器一直响。 |
![]() | 函数 | 封装一段可重复调用的积木。 | 体验:定义 tim_callback。 |
![]() | 串口 | 在控制台打印一行信息,便于调试。 | 体验:回调里 print(ticks_ms())。 |
![]() | 控制 | 读取开机以来的毫秒数,用于计时、测反应。 | 体验:打印开机毫秒数,看节拍是否均匀。 |
![]() | 变量 | 给变量写入新值。 | 完整代码:计时 = 0。 |
![]() | 板载显示 | 按设定时间显示图案或字符串。 | 完整代码:点阵居中显示计时。 |
![]() | 变量 | 读取变量当前值。 | 完整代码:把计时送到屏上。 |
![]() | 变量 | 声明在函数内外都能用的变量。 | 完整代码:回调里 global 计时。 |
![]() | 数学 | 对变量做 +=、-= 等自身运算。 | 完整代码:计时 += 1。 |
六、知识点讲解
本课核心是定时器中断:不必让主程序一遍遍去「问现在到点了没有」,到点后由定时器自己插入回调——闹钟到点自己响,不必你盯着表。
轮询 vs 中断
轮询:主循环不停检查条件,检查不到就干等。中断:硬件按固定周期触发回调函数,主循环哪怕是 pass,回调仍会按时执行。本课体验题里主循环几乎空转,控制台却仍每隔约 1 秒打印一次毫秒数,就是中断在干活。
定时器三要素
要说清三件事:谁(Timer 编号)、多久一次(period,单位毫秒)、到点做什么(callback)。PERIODIC 表示周而复始,不是只响一次。
系统运行时间
ticks_ms 是开机以来的毫秒数,适合当「现在几点」的尺子。打印它能看见节拍是否均匀;后面做秒表、测反应,都要靠时刻差,而不是靠人眼数 sleep。
- 回调函数里尽量短:计一次数、打一行日志即可;把显示、按键判断留给主循环,避免回调里卡太久打乱节拍。
- 改 period 再运行:间隔变小,打印更密;变大则更稀。这就是后面「精度」课要调的那个旋钮。
- 过关:能口述「主循环在空转,为什么控制台仍按时出数」,并指出是哪一块积木在设周期、哪一块是回调。
先分清「定时器回调」和「主循环」各干什么,再载入示例对照打印间隔。
七、编程练习
点「载入」打开 MixVM(board=mixgo_zero_design)。在 Mixly 工具栏点「运行 / 停止」,「检查」做关键字核对。请先读本页「四、解题思路」与「五、图形块功能讲解」,再点载入。
1-1-1 定制中断测试.mix。载入后运行。
正在载入编程环境
正在载入 MixGo ZERO 仿真编程环境…
八、课堂练习
先完成两道判断题,再完成选择题;全部选定后点「检查」。
判断:体验题必须按键,控制台才会打印毫秒数。
判断:主循环几乎空转时,定时器仍可按 period 进入回调。
体验题约每秒打印一次 ticks_ms,主要靠哪一块?
把 period 从 1000 改成 200,最可能看到什么?
九、本节小结
记住:体验题看控制台节拍;点阵秒表是 1-1-2。改 period,疏密就会变。









