
第一次看到博主用 VOFA 调试串口屏幕上两条正弦波流畅地滚动出来比一排十六进制数直观太多。VOFA 自带波形图、直方统计和 FFT硬件调试从此可以“看得见”。我打算让 Claude Code 直接生成这份双正弦波输出代码而给 Claude Code 提供模型通道的是 TaoTokenKey 从 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 拿。这样既不用反复切换官方 Key也不需要自己去折腾各种环境变量把 Claude Code 的模型地址指到 TaoToken 后剩下的代码生成、注释、格式整理都可以交给它。1. 第一次用 VOFA 想画两条正弦波1.1 普通串口助手和 VOFA 的区别以前用串口助手最多就是看字符串或者十六进制数据量大一点眼睛就花了。VOFA 的界面更像示波器把串口发过来的数据实时绘制成曲线。它支持串口、网口还能显示波形图、直方图、FFT 频谱对调试传感器、电机控制、电源环路这类场景特别合适。原作者用 STM32 输出两个正弦波一个是sin(t)一个是sin(2*t)通过串口发到 VOFA立刻就能看到两条不同频率的波形。想复现这个效果需要先让单片机按照 VOFA 能识别的文本帧格式输出数据。格式不复杂就是一行文本里面带两个浮点数比如d: 0.841, 0.909 \r\n。关键是要有一个串口发送函数循环里不断打印这两个值。这部分代码可以手写也可以交给 Claude Code 来生成前提是 Claude Code 能正常跑起来。1.2 TaoToken 在中间扮演什么角色Claude Code 是 Anthropic 出的命令行编程工具本地读代码、改代码都很方便但用它需要能访问到 Claude 模型接口。很多开发者卡在模型通道这一环不是没有 Key而是 Key 分散在几处或者某个 Key 额度用完了又要去换一个。TaoToken 就是把这个过程收拢成一条统一接入通道。你在 TaoToken 上创建一把 Key拿到一个 Base URL然后把 Claude Code 的环境变量指过去它就能用同一套配置访问 Claude 模型。TaoToken 不参与你写什么代码它只负责让 Claude Code 有一个可用的模型入口。所以整件事的链路是TaoToken 提供 Key 和 Base URLClaude Code 负责生成 VOFA 需要的双正弦波代码STM32 负责把数据发出来VOFA 负责显示波形。每个环节各干各的TaoToken 只是模型通道。2. 去 TaoToken 拿 Key再把 Claude Code 指向它2.1 注册并创建 API Key打开 TaoToken 官网注册账号后进入控制台在 API Keys 页面创建一把新 Key。创建时不需要选太复杂的权限配置一个普通可调用的 Key 就够。复制下来保存好它长这样YOUR_API_KEY。注意这个 Key 只显示一次建议直接存到密码管理器里。如果你已经有 TaoToken 账号那就更简单直接在控制台点“创建 Key”然后复制。整个过程不到一分钟。有了 Key还需要记住 TaoToken 给 Claude Code 用的 Base URLhttps://taotoken.net/api。注意末尾没有/v1很多工具会自动补但在这里不要加。2.2 修改 Claude Code 的 settings.jsonClaude Code 读取模型配置主要通过两个地方环境变量或者~/.claude/settings.json里的env字段。推荐用 settings.json因为配置一次之后每个终端窗口都有效。打开~/.claude/settings.json没有就新建写入{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: YOUR_API_KEY, ANTHROPIC_MODEL: 你的模型ID } }这里ANTHROPIC_MODEL不要填死某个版本号模型 ID 每天可能在上新最稳妥的做法是到 TaoToken 模型广场 看当前有哪些模型可选。选好之后把对应的模型 ID 填进去。比如你想用偏编程能力的模型就挑广场里标注 coding 的那个想看通用对话就挑 chat 那个。不要凭记忆猜一个名字。保存文件后在终端里运行claude命令如果能看到欢迎界面说明 Claude Code 已经通过 TaoToken 连上了模型。此时可以直接开始提需求。3. 让 Claude Code 按 VOFA 的文本帧格式生成代码3.1 把需求说清楚VOFA 识别文本帧的规则是一行为一帧以\r\n结尾用d:开头后面跟逗号分隔的浮点数。所以我们让 Claude Code 生成 STM32 工程里的串口输出逻辑时要明确告诉它这个格式。可以这样提问我在 STM32 工程里用 PrintfDebugUart 函数发送串口数据 需要在一个 while(1) 循环里输出两个正弦波 sin(t) 和 sin(2*t)。 数据格式要求每行以 d: 开头两个浮点数用逗号分隔以 \r\n 结尾。 然后 HAL_Delay(100) 控制发送节奏。 请生成完整的 while 循环代码。Claude Code 会根据这段描述给出代码。它大概率会建议把变量t定义成float每次循环增加0.1f再调用PrintfDebugUart打印。你还可以继续追问它如果PrintfDebugUart内部用了printf重定向需要注意浮点数输出格式或者问它如何调整采样间隔让波形更平滑。这些都不需要你手动查手册直接问就行。3.2 生成结果与接入 STM32 工程Claude Code 生成的代码和原作者写的结构一致但注释和边界处理会更细致。示例输出如下float t 0.0f; /* Infinite loop */ while (1) { t 0.1f; PrintfDebugUart(d: %f, %f\r\n, sinf(t), sinf(2.0f * t)); HAL_Delay(100); }这段代码可以直接放在 STM32CubeIDE 生成的main.c的/* USER CODE BEGIN WHILE */与/* USER CODE END WHILE */之间。注意PrintfDebugUart函数在你的工程里必须已经实现常见做法是把printf重定向到串口。如果还没实现可以让 Claude Code 顺便生成一个基于 HAL_UART_Transmit 的PrintfDebugUart函数。生成后编译下载到开发板然后打开 VOFA选择对应的串口号和波特率默认通常是 115200具体看你的串口初始化连接后就能看到两条正弦波。这里有个小建议如果波形看起来不够平滑可以把t 0.1f改成0.05f同时把HAL_Delay(100)改成50采样点更密曲线会更圆润。这个调参思路也可以直接问 Claude Code它会给你解释幅度、频率和采样点数的关系。4. 上电验证波形和遇到的两个常见问题4.1 打开 VOFA 看波形STM32 上电后VOFA 的波形窗口应该会开始滚动。如果你用的是默认文本格式VOFA 会自动识别d:前缀把两个 float 解析成两路通道。界面下方会显示当前值右侧可以切换直方图或 FFT。看到两条正弦波频率比 1:2说明数据通路完全正常。如果屏幕上没有波形先看串口有没有选择对。Windows 上可以在设备管理器里确认 COM 号macOS 或 Linux 下通常是/dev/tty.usbserial-*或/dev/ttyACM*。波特率也要和代码里的串口初始化一致否则收到的是乱码VOFA 无法解析。4.2 配置不通时先查这三处Claude Code 已经配好但跑不通的情况也很常见我总结了三处最容易被忽略的地方。第一Base URL 写没写对。很多人习惯性在末尾加/v1导致请求路径变成https://taotoken.net/api/v1TaoToken 的服务端不认这个路径直接拒绝连接。记得改成https://taotoken.net/api不要带/v1。第二模型 ID 是否真实存在。如果你填的模型 ID 是自己猜的比如某个带日期后缀的版本TaoToken 模型广场上并没有这个 ID调用时就会提示模型不存在。正确做法是打开 TaoToken 模型广场照着列表里的 ID 抄。第三Key 前后有没有多余空格。从控制台复制 Key 时偶尔会多复制一个换行或空格粘贴到settings.json里不容易看出来但请求时会带上导致认证失败。建议在终端里用echo -n YOUR_API_KEY | wc -c检查一下长度或者直接在 JSON 编辑器里确认字符串没有隐形字符。5. 跑通之后去控制台核对这次调用波形画出来代码生成成功最后一步是回到 TaoToken 确认一下这次调用是否正常记账。打开 TaoToken 控制台进入 API Keys 页面可以看到刚创建的 Key 的使用记录包括调用时间、模型 ID、Token 消耗。这里能直观看到生成 VOFA 代码消耗了多少 token也能验证配置确实生效了。如果你接下来要频繁用 Claude Code 写代码不妨看看 Coding Plan套餐通常比按量更划算。先在 模型对话页 用同一把 Key 随便聊几句确认通道稳定再回到 Claude Code 里继续干活。完整的 Claude Code 环境变量对照表在 接入文档里面还有ANTHROPIC_SMALL_FAST_MODEL等进阶配置说明。把 TaoToken 配进 Claude Code 之后最直观的变化是不用再为“这个 Key 还有没有额度”发愁。生成 VOFA 双正弦波这段代码只是热身你还可以让它继续帮你调 PID 参数、解析串口数据、写上位机脚本。模型通道通了后面的事情就顺了。