Skip to content

Repository files navigation

Smart Networked Clock System / 智能联网时钟系统

这是一个基于 S800/TM4C1294 的智能联网时钟系统公开版本,配套 PyQt5 PC 上位机。项目最初来自嵌入式系统与接口技术课程大作业,公开展示重点放在板端时钟逻辑、串口协议、PC 数字孪生、网络对时/天气和日程提醒系统。

当前公开版本对应 v2.2,保留了已验证的 MCU 工程、PC 上位机源码、测试说明、截图和提交包副本。项目覆盖:

  • S800 板本地时钟、日期、闹钟和显示/按键逻辑;
  • PyQt5 PC 上位机、串口 SET / GET / PING 协议和本地无串口模式;
  • 网络对时、天气、自动昼夜切换等扩展功能;
  • 多日程/课程提醒系统;
  • 串口事件回传、数字孪生和教师协议回归测试。

目录结构

真正的最新版/
├─ mcu/
│  ├─ Inc/
│  ├─ Driverlib/
│  ├─ RTE/
│  ├─ src/main.c
│  ├─ obj/
│  ├─ listings/
│  ├─ clock.uvprojx
│  └─ clock.uvoptx
├─ pc_host/
│  ├─ .venv/
│  ├─ app.py
│  ├─ bootstrap_qt.py
│  ├─ diagnose_qt_runtime.py
│  ├─ launch_pc_host.ps1
│  ├─ launch_pc_host.bat
│  ├─ main.ui
│  ├─ ui_main.py
│  ├─ protocol.py
│  ├─ twin_widgets.py
│  └─ requirements.txt
├─ docs/
│  ├─ deployment.md
│  ├─ test-guide.md
│  ├─ 大作业要求逐条验收对照.md
│  ├─ 当前项目状态总览.md
│  └─ 自主答辩准备初稿.md
├─ submission/
│  ├─ README.md
│  ├─ 简介PDF_4-8页初稿大纲.md
│  └─ 演示视频_5分钟脚本初稿.md
└─ README.md

MCU 说明

  • 基于官方 EXP3 模板改造。
  • 自编核心逻辑集中在 main.c
  • 当前已实现的主线包括:
    • 1 ms SysTick 时基
    • 数码管动态扫描
    • 8 键 + USER1/USER2 防抖
    • 日期/时间/闹钟
    • 本地编辑状态机
    • FORMAT LEFT/RIGHT
    • 串口 SET / GET / PING
    • *EVT:DISP / *EVT:LED / *EVT:MODE / *EVT:KEY / *EVT:ALARM / *EVT:EDIT

PC 说明

  • 技术栈:Python 3.11/3.12 + PyQt5 + pyserial。按老师 FAQ 推荐,若需要源码环境和 Qt Designer/pyqt5-tools,优先使用 Python 3.11.9;打包版 exe 不要求安装 Python。
  • GUI 入口:pc_host/app.py
  • 推荐启动入口:pc_host/launch_pc_host.ps1
  • 当前上位机版本:v2.2
  • Qt 运行时自检:pc_host/diagnose_qt_runtime.py

快速开始

PC 上位机

详细步骤见 deployment.md

最短路径:

cd D:\桌面\大二下\大二下 嵌入式系统与接口技术\ARM\真正的最新版\pc_host
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple PyQt5 pyserial
python -m PyQt5.uic.pyuic -o ui_main.py main.ui
.\launch_pc_host.ps1

MCU

  • 打开 mcu/clock.uvprojx
  • 目标芯片:TM4C1294NCPDT
  • 自编代码位于 mcu/src/main.c

当前状态

  • 当前主版本:v2.2,PC 端、提交报告、release 包和 MCU 源码已按老师最新版 FAQ v1.3 收口。
  • MCU 侧已完成:
    • mcu/src/main.c 主逻辑覆盖开机画面、时钟/日期/周几显示、滚动、闹钟、编辑状态机、LED、蜂鸣、串口协议和事件上报。
    • Keil 工程已确认 OutputName=s800_clockCreateExecutable=1CreateHexFile=1HexFormatSelection=1,可生成老师提醒需要的 s800_clock.hex
    • 2026-06-17 为对齐 FAQ v1.3,已把 *EVT:DISP 改为“8 字符不含小数点 + dpHex”的新规则,并已通过 PC host-only 回归和 MCU C 语法检查。
    • 2026-06-17 已用 Keil5 重新编译最新 mcu/src/main.c,生成并刷新 mcu/obj/s800_clock.axfs800_clock.hex;命令行烧录日志显示 Programming DoneVerify OK
  • PC 侧已完成并同步:
    • Python + PyQt5 + pyserial + matplotlib 源码版可运行,build_release/SmartClockHost-v2.2/SmartClockHost.exe 打包版已重新生成。
    • PC 下发的 DATE/TIME/ALARM 已改为老师测试使用的“字段组 + 数值组”格式,例如 *SET:TIME HOUR MIN SEC 12 30 45,同时保留旧交替参数格式兼容。
    • 已实现串口控制、数字孪生、日志、自动测试、NTP 对时、天气短显、自动昼夜、多日程提醒、Matplotlib 数据可视化和本地离线演示。
  • 老师 testcmdV2.1 历史实测结论:
    • 原始 100 条命令:OK 92ERROR 8TIMEOUT 0,评分脚本给出 10.0/10.0
    • 8 个 ERROR 是测试集中故意构造的非法命令,属于协议正确拒绝,不应为了把原始 ERROR 数降到 5 以下而错误放行非法输入。
    • 自建严格回归 pc_host/run_teacher_protocol_regression.py --port COM5 已加严到覆盖 FAQ v1.3 实板显示帧;最新烧录后 COM5 结果为 PASS=27 FAIL=0
  • 当前可重点讲的自主创新亮点:
    • GitHub 版本管理与阶段化 release,便于展示工程迭代过程。
    • 昼夜模式同时影响 PC 页面风格与板端数码管显示,可手动切换,也可按现实时间、城市和时区自动决定;板端与 PC 均可操作并同步。
    • 快速/全面/老师 testcmd 三套测试视角,分别覆盖日常演示、扩展功能和课程串口评分点。
    • 针对 NTP、天气、串口、按键连发、RESET、栈空间和 UART 轮询的防卡死保护,两端状态对齐程度高。
    • 全球城市/时区支持,NTP 对时后按城市本地时间刷新。
    • UI 面向展示和真实使用做了卡片看板、Matplotlib 图表看板、清晰日志、数字孪生和可操作调试区,普通用户双击 exe 即可体验。
  • 待最终提交前人工材料:
    • Keil5 重编、s800_clock.axf/.hex 刷新、Flash Verify OK 和 COM5 FAQ v1.3 严格回归 PASS=27 FAIL=0 已完成。
    • 只差录制不超过 5 分钟带旁白演示视频,并按老师命名规则整理最终 zip。

文档

说明书 README 部分

使用目录

1. 程序组成

本项目由 MCU 端和 PC 上位机两部分组成。MCU 端运行在 S800/TM4C1294 板卡上,负责数码管、LED、按键、蜂鸣器、闹钟和串口协议。PC 端是 PyQt5 上位机,负责串口控制、网络对时、天气获取、数字孪生镜像、日程和自动测试。

2. MCU 端启动

  1. 用 Keil5 打开 mcu/clock.uvprojx
  2. 确认目标芯片为 TM4C1294NCPDT,连接 S800 板卡调试器。
  3. 编译并下载程序到板卡。
  4. 按板卡 RESET 后,数码管会进入开机画面,然后进入正常时钟显示。

本轮 MCU 修改已在 2026-06-17 重新编译并烧录验证;后续如果再次修改 mcu/src/main.c,需要重新生成并烧录 s800_clock.hex

3. PC 端启动

源码版启动:

cd D:\桌面\大二下\大二下 嵌入式系统与接口技术\ARM\真正的最新版\pc_host
.\launch_pc_host.ps1

如果第一次运行源码版,先安装依赖:

cd D:\桌面\大二下\大二下 嵌入式系统与接口技术\ARM\真正的最新版\pc_host
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -r requirements.txt

打包版启动:

build_release/SmartClockHost-v2.2/SmartClockHost.exe

打包版为 PyInstaller onedir 形式,普通用户双击 SmartClockHost.exe 即可启动,不需要额外安装 Python。若同时提供压缩包,文件名通常为 build_release/SmartClockHost-v2.2.zip

正式使用时不设置 SMARTCLOCK_PROFILE_DIR,打包版会把用户配置、日程、运行状态和日志保存到 Windows 用户目录 %APPDATA%\SmartClockHost-v2.2。这样以后替换新的 exe 或重新解压 release,不会抹掉已经试用过的配置数据。若旧 release 文件夹里已有 config.jsonruntime_state.jsonschedules.jsonlogs/events.jsonl,程序首次启动会复制到 AppData,但不会覆盖 AppData 中已有的新配置。

打包/烟测时请使用临时运行态目录,例如设置 SMARTCLOCK_PROFILE_DIR=tmp/release_smoke_profile 后再启动 exe;这样不会覆盖正式使用时的 AppData 配置、日程、运行状态或日志。

4. 串口连接步骤

  1. 先把 S800 板卡通过 USB 连接到电脑,并确认板端程序已运行。
  2. 打开 PC 上位机,在串口下拉框中选择扫描到的端口,例如 COM5;如果下拉框暂时没有显示,也可以直接输入 COM5
  3. 点击连接按钮。连接成功后,状态栏会显示已连接端口,日志会出现连接成功和板端响应信息。
  4. 点击查询或等待心跳事件,数字孪生镜像应开始跟随板端数码管和 LED。

如果只想离线演示 PC 端功能,可以选择“不使用串口”。此时数字孪生镜像会显示一个本地模拟板卡状态,仍可体验对时、天气、昼夜、消息和日程等功能。

界面截图

以下截图来自 v2.2 上位机在 Windows 原生 Qt 窗口下的 1280x720 检查,用于快速确认页面结构。实际演示时建议优先使用 build_release/SmartClockHost-v2.2/SmartClockHost.exe,因为后续每版交付都会重新打包 exe。

主页数据看板

Matplotlib 图表看板

Matplotlib 日志统计

黑夜模式图表看板

系统设置与板端显示

闹钟与日程管理

调试与自动测试

5. 主界面与数据看板

串口连接状态放在页面上方“串口连接”模块;主页数据看板只保留适合展示的信息,包括当前时间、日期星期、城市天气、昼夜模式、下次提醒、系统状态和问候语。问候语会按时段显示“早上好 / 中午好 / 下午好 / 晚上好 / 夜深了”,用户名可在系统设置中修改。

主页看板右上角提供“卡片看板 / Matplotlib 图表”切换。卡片看板保持原来的 6 张信息卡,适合课堂演示时快速说明当前状态;Matplotlib 图表看板用于完成扩展功能 E4,可在不离开主页的情况下切换四类筛选图:

  • 今日时间轴:展示当前城市时间、日照区间和今日下次提醒位置。
  • 提醒分布:按星期汇总已启用的单次日期提醒和每周提醒。
  • 系统状态:按逻辑顺序展示显示开关、昼夜状态、串口/本地模式、天气缓存、板载闹钟 0/11/1、PC 提醒 启用/总数,不再使用容易误解的百分比。
  • 日志统计:统计过去 24 小时内板端显示、NTP/天气、闹钟日程、昼夜模式、自动测试、系统设置、错误警告等不同类型操作数量。

图表会跟随白天/黑夜主题重绘,使用当前城市、天气缓存、板载闹钟、PC 日程和本地事件日志数据,不会抢占右侧数字孪生镜像,也不会改变 MCU 通信协议。图表刷新已做防抖和异常保护,即使 Matplotlib 单个图绘制失败,主程序也会继续运行并在日志提示。

日期和时间编辑框用于设置板端时间。修改后点击对应设置按钮会通过串口发送到 MCU;离线模式下会修改 PC 本地镜像时间。

6. 网络对时与天气

“网络对时与天气”模块用于选择城市、NTP 对时、刷新天气并把结果应用到板端。

使用步骤:

  1. 在城市输入框中输入城市名,例如 上海北京New YorkHoustonChicago
  2. 也可以直接输入国家名,例如 美国USA日本Australia;程序会定位到该国首都,并保留国家信息用于界面展示。
  3. 点击“一键对时、刷新天气并应用”。日志会按流程提示“正在定位城市/国家、时区已获取、正在拉取天气、天气已刷新”。
  4. 上位机会保存当前城市/首都,定位经纬度和 IANA 时区,执行 NTP 对时,刷新天气,并按天气结果更新板端短显和 LED。
  5. 当前时间显示会每秒按所选城市时区刷新;国外城市会优先用 Python zoneinfo 计算 IANA 时区和夏令时,若打包环境缺少完整 tzdata,则用内置代表城市/国家首都表和常见 DST 规则兜底。

全球时区和天气主要使用 Open-Meteo:先调用 Open-Meteo Geocoding 获取城市坐标、国家和 IANA 时区,再调用 Open-Meteo Forecast 获取当前温度、天气码、日出日落和 utc_offset_seconds。国内常见城市会优先尝试国内天气接口;Open-Meteo 失败时会尝试 Nominatim 地理编码和 wttr.in 天气兜底。Houston、Chicago、London、Tokyo、Paris、New Delhi、Sydney 等代表城市,以及中国、美国、日本、澳大利亚等国家名,有内置预设,网络不稳时仍可快速得到时区和坐标。

NTP 成功后,PC 会以获取到的城市时间作为基准,再用单调时钟本地推进,避免重复加秒或 UI 定时器造成走时偏快。

串口连接成功、板端硬件 RESET/启动、协议台发送 *RST 后,PC 会自动排队执行一次 NTP 对时并写入 S800;若 NTP 超时或失败,会改用当前城市/PC 时间作为兜底写入,日志会说明来源。手动发送 *SET:TIME*SET:DATE 只写入时间,不会误触发 NTP。写入板端时会先等 SET DATE 返回 OK 再发送 SET TIME,避免命令过密导致日期写入偶发报错。

如果串口 TX 后数秒内没有任何 RX,上位机会自动清理未完成等待态,先尝试发送 EXT/PING 让板端退出临时显示;仍无响应时会尝试软 RST 并在日志提示。USER1 连续短按/长按会被合并节流,避免重复 NTP 或昼夜模式切换把串口状态机压住。PC 虚拟按键和协议台 *SET:KEY ... 也有短冷却窗口;最新 MCU 固件中串口模拟按键同样做了冷却,FUNC 会被更严格限流。

7. 昼夜模式与自动切换

白天/黑夜模式可手动切换,也可启用自动昼夜切换。自动模式在 v2.2 安装包默认开启,会根据当前城市时间、日出日落信息或默认时间段判断应使用 DAY 还是 NIGHT。

注意:PC 端按钮和板端 USER1 长按都可以切换昼夜模式,并会同步到另一端。用户手动切换另一昼夜模式时,上位机会关闭自动切换,并只在日志记录原因。切换城市或执行一键对时/天气刷新不会主动清空自动昼夜勾选状态。RESET/重连后的短时间内以 PC 当前模式为准,PC 会把 DAY/NIGHT 同步回板端,避免板端默认状态污染上位机显示。

8. 数字孪生镜像

数字孪生镜像用于在 PC 端同步显示板端数码管、LED 和按键状态。

  • 串口已连接时,以 MCU 上报的 *EVT:DISP*EVT:LED*EVT:KEY 为准。
  • 串口未连接时,以 PC 本地运行时状态生成镜像,方便离线演示。
  • 板端开机显示 88888888、学号后八位、V2.2 版本/提示语时,PC 端会尽量同步显示;如果 PC 较晚连接,后续收到真实显示事件后会自动进入当前状态。
  • *EVT:DISP_ 仍表示空白物理位;如果滚动消息里需要真实显示下划线,MCU 会用 ~ 上报,PC 数字孪生会还原为七段码底段。
  • USER2 专用于天气短显:上位机虚拟 USER2、协议台 USER2 和自动测试采用安全短显路径,不再裸发 *SET:KEY USER2,而是按 DISPLAY ON -> FORMAT LEFT -> LED -> MSG 间隔发送天气 token,避免旧固件 USER2 内部路径或串口连发把状态机卡住。PC 收到实体 USER2 事件时也会辅助覆盖同一天气 token;若遇到非法显示帧,数字孪生会忽略该帧并自动重试短显。它不再承担 SUB/减一功能。当前提交包内 MCU 固件已包含 USER2 路径的最新修复。
  • DISP 短按按顺序切换 时间 -> 日期 -> 星期 -> 年份,其中星期页显示 MONDAYSUNDAY;如果显示曾被长按关闭,短按 DISP 会先恢复显示再切页。
  • PC 虚拟按键也支持长按:按住约 0.8 秒会触发对应长按语义,例如虚拟 USER1 长按切换 DAY/NIGHT,虚拟 DISP 长按切换显示开关,虚拟 FUNC 长按按保存/退出编辑语义处理。
  • 右侧镜像的 LED 条按 D1-D8 标号;详细位义和 *SET:LED XX 掩码用途放在“调试与测试 -> 板端硬件测试”区域,右侧日志只保留紧凑的当前 LED 十六进制值。

8 位 LED 分配如下:

LED 含义
D1 心跳/运行节拍
D2 板载单次闹钟启用或响铃闪烁
D3 日期/时间/闹钟编辑状态
D4 串口 RX 收到数据短闪
D5 串口 TX 发送数据短闪
D6 夜间模式标志
D7 RIGHT 显示方向标志
D8 NTP 同步状态:未同步灭,24 小时内常亮,超过 24 小时慢闪;夜间普通页 LED 仍仅保留心跳

天气短显或 LED 掩码接管期间,LED 会临时覆盖整组 D1-D8;结束后恢复上述系统状态位。

9. 蜂鸣、闹钟与单次闹钟

蜂鸣测试和 LED 掩码设置位于“调试与测试”页面的板端硬件测试区域;日志会记录发送的命令和板端反馈。LED 掩码使用 8 位十六进制值,例如 8005;发送 *SET:LED XX 后板端会按掩码接管 8 位 LED 约 10 秒,便于验收逐位点亮;发送 *SET:LED 00*RST 会立即退出接管,随后恢复系统状态位。

普通闹钟使用时间编辑框设置时分秒,可启用或关闭。到点后板端蜂鸣器响铃,PC 日志和状态区会显示闹钟事件。

单次闹钟模块会直接显示“当前状态:开/关 触发时间:xxxx”。一行按钮中保留“查询”和“启用/关闭”:关闭时按钮显示“启用”,开启时按钮显示“关闭”。PC 会在板端通过物理/虚拟按键保存或关闭单次闹钟后自动补查状态,不需要手动点查询。

关闭板载单次闹钟有两种方式:

  • PC 端:进入“闹钟与日程管理”,在“板载单次闹钟”模块点击“关闭”。
  • 板端/虚拟按键:短按 FUNC 依次进入日期、时间、ALARM 编辑页;在 ALARM 编辑页按 EXT 会关闭单次闹钟并退出编辑。正常页面如果没有天气短显、跑马灯或闹钟需要退出,按 EXT 会回到默认时间页并打开显示;若板载单次闹钟已启用,则优先关闭该闹钟。按 SAVE 或长按 FUNC 则保存当前闹钟时间。

10. 日程管理

日程管理用于添加课程、会议、提醒等事项。新增日程默认启用提醒。日程项是否启用只通过双击表格项切换。

铃声预览入口放在具体模块内:闹钟/日程的铃声选择框旁边有“预览”按钮。语音播报也按模块控制,闹钟和日程分别有自己的“启用语音播报”选项;语音文本为空时默认不播报。即使语音不可用,普通日志和蜂鸣提醒仍可继续使用。

11. 滚动消息

滚动消息用于把较长文本显示到 8 位数码管。输入文本后点击发送,MCU 和 PC 数字孪生会尽量保持同样的滚动过程。

当前逻辑会让消息至少显示 5 秒,最长不超过约 10 秒;到达最左端或最右端会多停一个节拍,滚动文本至少会往返碰到一次端点,最后一帧额外停留约 2 秒再恢复时钟。短文本不需要滚动时,也会至少维持显示 5 秒。

12. 系统设置与用户名

系统设置中保留全局显示、FORMAT、DAY/NIGHT、滚动消息、城市/时区、自动昼夜和用户名等设置。页面底部提供“恢复出厂设置”,点击后会二次确认,确认后重置城市、主题、显示、闹钟、日程和本地运行状态;若串口已连接,会尽量把默认显示/模式/闹钟/LED 状态同步到板端。蜂鸣、LED 掩码、协议测试等偏调试功能在“调试与测试”页面;语音播报入口在闹钟和日程各自模块内;自动测试只由用户手动点击运行。

用户名默认是“用户”。输入新的用户名后点击确认,主页问候语会立即更新,并持久化保存到配置文件,下次打开 PC 端仍会使用该名称。

13. 自动测试

自动测试界面用于检查串口协议、显示、LED、模式、闹钟、天气短显、数字孪生和扩展功能,只会在用户手动点击测试按钮后启动,不会开机自动运行。

界面提供两个入口:快速联合测试 覆盖 PING、GET、日期时间写入、昼夜切到另一模式再切回、铃声和 USER2 天气短显实测;USER2 项会先下发天气缓存,再等待 *EVT:DISP 中出现天气 token,不能只凭 OK 通过。全面联合测试 会额外覆盖跑马灯下划线、DISP/SPEED/FORMAT/EXT 按键、高并发按键 burst 和全部 ERROR 类型。当前测试脚本按“上一项稳定后再下一项”的节奏执行,预计耗时约 45 秒/140 秒;任一串口项 FAIL 会立即停止后续项目,并在收尾时恢复测试前的 FORMATMODEDISPLAY 和自动昼夜开关状态。测试运行时页脚会显示“测试中”,并忽略人工串口操作;如发现疑似硬件端卡死,会提示“请手动 RESET”。

自动测试开始后会出现“中止测试”按钮。点击后不会立刻粗暴断串口,而是请求当前步骤尽快退出、停止后续测试项,并执行收尾恢复;测试结束后会回到启动测试前的左侧页面。测试输出框按 [当前/总数] 项目名 显示进度,快速测试约 11 项,全面测试约 21 项;左侧只保留每项做了什么、OK/FAIL 和结论,完整 TX/RX 仍保留在右侧日志区用于排查。

点击开始测试后,界面会显示预计测试时间。每完成一个测试点,会追加一行 OKFAILSKIP。测试全部结束后,失败项会附带简短排查方向,便于定位是串口、板端响应、显示同步还是网络条件问题。

“调试与测试”页还提供“协议测试台”:下拉框包含各类完整命令模板;缩写当前指令随机混合大小写 都作用于当前文本框里的指令,最后统一用 发送当前指令 下发并在日志查看 TX/RX。错误模板覆盖 ERROR LENERROR SYNTAXERROR PARAMERROR RANGE,用于演示异常格式符合 ERROR <reason>

14. 常见问题排查

串口连不上:

  • 确认板卡 USB 已连接,Keil 串口调试没有占用同一个端口。
  • 点击刷新串口,或在下拉框中手动输入 COM5 后连接。
  • 连接成功后应能看到日志、状态栏端口和板端 READY/心跳事件。

天气刷新失败:

  • 先看日志中的网络错误和城市名是否正确。
  • 不开代理时优先保证 NTP;天气接口可能受网络环境影响,可换国内城市或稍后重试。
  • 开代理后如果 NTP 异常,确认代理没有拦截 UDP/HTTP 时间请求;本项目会尽量尝试多个 NTP 源。

时间不对或走时偏快:

  • 先执行“一键对时、刷新天气并应用”。
  • 国外城市请检查日志中的城市、时区和 UTC offset,例如纽约夏令时应显示 UTC-04:00,冬令时应显示 UTC-05:00
  • 如果板端每分钟仍明显偏快,需要确认烧录的是 2026-06-17 后重新生成的 s800_clock.hex

闹钟不响:

  • 检查闹钟是否启用,触发时间是否是板端当前时间之后。
  • 检查是否处于夜间静音或蜂鸣器测试失败。
  • 查看日志中是否出现 *EVT:ALARM 事件。
  • 如果用板端按键改过单次闹钟,PC 端正常会自动刷新;仍不同步时可点“查询”或检查日志里是否出现 *EVT:EDIT ALARM / *GET:ALARM

数字孪生不同步:

  • 串口连接时以 MCU 上报为准,先确认日志中有 *EVT:DISP*EVT:LED
  • 最新 FAQ_常见问题解析_V1.3(3).pdf 已放入 docs/大作业要求/,并作为协议细节的最新依据。显示帧采用 *EVT:DISP <8字符> <dpHex>,8 字符不包含小数点,空位用 _dpHex 的 bit0 对应最左 digit;例如 12.30.45 LEFT 上报 123045__ 0A,RIGHT 上报 __540321 28
  • 如果刚连接时还停留在旧画面,等待下一次心跳或点击查询运行状态。
  • 离线模式下数字孪生显示的是 PC 本地模拟状态,不代表真实板卡。
  • 如果滚动消息包含 _,应显示为七段码底段;日志中的 *EVT:DISP 可能会看到 ~,这是为了区分真实下划线和空白位。
  • 如果按 USER2 后日志提示已发送 SUN29C/NO WX 但板端没有显示,先看日志是否出现“非法 DISPLAY 帧”或“自动恢复显示”。PC 会自动用 EXT + DISPLAY ON + FORMAT LEFT + MSG 重试短显;仍失败时优先确认烧录的是 2026-06-17 后重新生成的 s800_clock.hex

15. Keil HEX 提交提醒

老师最新提醒要求提交前检查 Keil Options for Target -> Output -> Create HEX File 是否勾选。本工程 mcu/clock.uvprojx 已设置:

  • OutputName = s800_clock
  • CreateExecutable = 1
  • CreateHexFile = 1
  • HexFormatSelection = 1

提交包中保留 mcu/obj/s800_clock.axfmcu/obj/s800_clock.hex,便于老师评测烧录。若修改过 mcu/src/main.c,必须用 Keil5 重新编译生成新的 axf/hex 后再最终压缩提交。

About

S800/TM4C1294 smart networked clock with PyQt5 PC host, serial protocol, digital twin, NTP/weather, and schedule reminders.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages