一、秒表计时

第1课 定制中断测试

任务场景:定制中断测试
任务场景:定制中断测试

一、任务目标

定时器按固定周期插入回调:体验题主循环几乎空转,控制台仍约每秒打印一次开机毫秒数;完整代码把累加送到点阵,做成会自己走的计时。

二、我们要学什么

  • 学习要点:定时器中断:period 一到就进回调,不必让主循环一遍遍去问「到点了没有」
  • 本课过关:能指出回调与主循环各干什么;改 period 后,打印或点阵读数的疏密明显变化。
  • 示例对齐:体验题对应 「1-1-1 定制中断测试」;完整代码对应 「1-1-2 简单计时器」。

三、本节要点

本节抓住「定时器回调」。体验 1-1-1 只打印 ticks_ms;点阵上的秒表数字是完整代码 1-1-2。

1读场景明确真实任务
2对要点定时器回调按时干活
3载入运行本课积木/代码

四、解题思路

  • 输入:本课体验不依赖按键;完整代码仍由定时器自己累加。
  • 输出:体验:控制台约每秒一行毫秒数。完整代码:点阵显示「计时」。
  • 生活对照:闹钟到点自己响,不必你盯着表问「到了没有」。
  • 验证现象:主循环是 pass 时控制台仍出数;改 period=1000 为更小,打印更密。

本课主要用到:定时器、串口打印;完整代码另用点阵屏。

  1. 1明确任务「定制中断测试」:先看控制台节拍,再对照完整代码的点阵计时。
  2. 2说清定时器三要素:谁(Timer 0)、多久一次(period)、到点做什么(callback)。
  3. 3主循环用 while True: pass 占住程序,回调才能一直被触发。
  4. 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。载入后运行。

八、课堂练习

先完成两道判断题,再完成选择题;全部选定后点「检查」。

  1. 判断:体验题必须按键,控制台才会打印毫秒数。

  2. 判断:主循环几乎空转时,定时器仍可按 period 进入回调。

  3. 体验题约每秒打印一次 ticks_ms,主要靠哪一块?

  4. 把 period 从 1000 改成 200,最可能看到什么?

九、本节小结

记住:体验题看控制台节拍;点阵秒表是 1-1-2。改 period,疏密就会变。