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

上一篇:信息安全专题 | 代码保护(1)使用STM32H7新特性保护片上代码的机密性
下一篇:STM32CubeIDE使用说明_3 —— 实时调试
推荐阅读最新更新时间:2026-03-24 18:22
- 支持 BLE 连接、由 4mA 至 20mA 电流回路供电的现场发送器参考设计
- AM2DM-0515DH60-NZ ±15 Vout、2W 双路输出 DC-DC 转换器的典型应用
- LTC6261IDC 音频耳机桥式驱动器运算放大器的典型应用
- LTC1775CS 2.5V/5A 可调输出降压稳压器的典型应用电路
- AD8601ARTZ-REEL7 符合 PC100 标准的线路输出放大器的典型应用
- 一种基于分立的 315MHz 振荡器解决方案,用于使用 BFR182 射频双极晶体管的远程无钥匙进入系统
- 使用 ROHM Semiconductor 的 BD49E39G-TR 的参考设计
- AM30EW-2405SZ 5V 三路输出 DC/DC 转换器的典型应用
- LTC3564 的电池在 1.2A 应用中达到 1.2V
- AL1676EV2,基于 AP1676 高亮度降压 LED 驱动控制器的评估板

stm32驱动屏IC rm68042
STM32 PMSM FOC 简介
基于STM32G031的测试测量训练平台完成虚拟仪器实现
非常经典的关于LLC的杨波博士论文
1CIS223-04TG3M






京公网安备 11010802033920号