vofa+ : 优雅のSTM32串口调试
2025-11-06 来源:bilibili
0、前言
最近工作和电机的学习都要频繁打印数据来调试,但用过keil自带的那debug的都懂啊,用来看看寄存器和打断点就还行,数据监看就完全是顶级折磨,将近半秒钟才刷新一次,纯纯看个乐了。单纯监看数据的话,用串口无疑是更好的选择,比如xcom和sscom,常用的115200波特率就足以把数据闪电般打印出来。

虽然速度的问题解决了,但是看到这无穷无尽的数据长龙宛如看到了我的人生走马灯.....想要在其中找到某几个出问题的数据更无疑是大海捞针。但今天,一切都好起来了,因为一个维新派串口工具改变了一切。
1、工具介绍
本次的主角:vofa+,非常简单的一个串口工具,常见的串口功能都有,但既然它出现在了文章里就证明它没那么简单,是的,它有个非常逆天的功能:能自动将接收的数据通过绘图画出来。
www.vofa.plus/
官网下载软件,官网也有些教程,简单说就是软件提供了额外的两种接收功能,只要你发送的格式符合要求的话就能把数据画出来,效果如下,

这太酷了,完全符合我对串口工具的想象。
2、是的,我写了个库(
当然,也不是随便发个数据就能画的,作者为了实现自动绘图要求接收的数据要遵循某些格式,具体可以看功能选择那里。

可能有点抽象,但没事,哥们花了点时间简单写了两个函数,实现了傻瓜式使用,如下。
github.com/xiaocainiao11111/vofa_for_stm32
#include 'vofa.h'
// 按printf格式写,最后必须加rn
void Vofa_FireWater(const char *format, ...)
{
uint8_t txBuffer[100];
uint32_t n;
va_list args;
va_start(args, format);
n = vsnprintf((char *)txBuffer, 100, format, args);
//....在此替换你的串口发送函数...........
HAL_UART_Transmit_DMA(&huart1, (uint8_t *)txBuffer, n);
//......................................
va_end(args);
}
// 输入个数和数组地址
void Vofa_JustFloat(float *_data, uint8_t _num)
{
uint8_t tempData[100];
uint8_t temp_end[4] = {0, 0, 0x80, 0x7F};
float temp_copy[_num];
memcpy(&temp_copy, _data, sizeof(float) * _num);
memcpy(tempData, (uint8_t *)&temp_copy, sizeof(temp_copy));
memcpy(&tempData[_num * 4], &temp_end[0], 4);
//....在此替换你的串口发送函数...........
HAL_UART_Transmit_DMA(&huart1, tempData, (_num + 1) * 4);
//......................................
}
/*...........示例..............
float f1=0.5,f2=114.514;
Vofa_FireWater('%f,%frn', f1, f2);
float f3[3]={88.77,0.66,55.44};
Vofa_JustFloat(f3, 3);
*/
如上所示,非常简短的两个函数,对应两种传输模式。
原理也不难,就是一个知识点:如何使用uint8_t无损传输浮点型,这个以后有机会细说。
但要注意,虽然原理上支持所有以uint8_t为传输单位的芯片,但要根据自己的芯片库函数去替换掉上图的那两行串口传输函数,我的这个仅适用于hal库dma模式下的stm32芯片。
使用方法也很简单,添加到工程里就能用,可以参考我之前的文章。
3、例程
为了方便学习,我提供了三个例程源码,也是在上面的链接里,前两个是烧录器加小蓝板加串口的传统组合,这哥三大伙能看到这里的应该都有吧,第三个是esp32的程序,不需要用到上面提到的库,直接用printf就行。
例程1(最简单的演示): xiaocainiao11111/vofa_for_stm32 (github.com)
选择FireWater模式,点击连接,现象:三个数据在自增或自减

例程2(移植的稚晖君foc算法,开环速度参数演示):xiaocainiao11111/vofa_for_stm32 (github.com)
选择 JustFloat模式,点击连接,现象:有点奇怪的七对极foc演示

例程3(灯哥foc算法,也是开环速度): xiaocainiao11111/vofa_for_stm32 (github.com)
用的pio环境,现象:非常标准的120度相位差foc

- 意法半导体中国本地造STM32微控制器启动规模量产
- 意法半导体全新STM32C5系列,重新定义入门级微控制器性能与价值,赋能万千智能设备
- 使用 Keil Studio for Visual Studio Code开发 STM32 设备
- 基于机智云与STM32的智能拐杖安全监测系统在养老物联网中的应用
- 内置全栈安全,一站式满足CRA法案与IEC 62443标准——米尔STM32MP257核心板
- 如何用 STM32 FLASH 实现等效 100 万次擦写的 EEPROM 功能?
- 实战解析:通过一个小项目掌握STM32所有外设
- STM32学了两年半,却还是不会做项目
- 意法半导体推出最新STM32MP21微处理器,兼具高性价比、低功耗、高灵活性
- 基于STM32的矿井作业环境监测系统设计与实现
- 六大全新产品系列推出,MCX A微控制器家族迎来创新
- 意法半导体全新STM32C5系列,重新定义入门级微控制器性能与价值,赋能万千智能设备
- 模组复用与整机重测在SRRC、CCC、CTA/NAL认证中的实践操作指南
- 有源晶振与无源晶振的六大区别详解
- 英飞凌持续巩固全球微控制器市场领导地位
- 使用 Keil Studio for Visual Studio Code开发 STM32 设备
- 从控制到系统:TI利用边缘AI重塑嵌入式MCU的边界
- 蓝牙信道探测技术原理与开发套件实践
- Microchip 推出生产就绪型全栈边缘 AI 解决方案,赋能MCU和MPU实现 智能实时决策
- LoRa、LoRaWAN、NB-IoT与4G DTU技术对比及工业无线方案选型分析




