单片机如何快速实现查看实时数据

在用 Keil 做调试的时候,最让人头秃的是什么?

不是写代码的BUG,而是:这个条件变量是什么情况?为什么没进入这个判断?我代码跑到哪里了?

其实本质上都是通过变量判断代码的执行顺序有没有问题

还有需要观察变量的变化就像看天象,得不停地点进去、刷新,点进去、刷新......

想偷个懒用串口传到上位机画波形?可以,但要加代码啊兄弟!

printf 打印?你以为你在写 PC 软件呢?嵌入式的资源浪费不起啊

那有没有既不写一堆代码、又能实时观察变量并支持可视化显示的神器?

答案是:有的,兄弟

我们今天就来聊聊两种"既要又要还要"的调试法宝,它们的原理都类似:
通过调试协议直接访问 MCU 的内存,像"读心术"一样看变量的变化。

1.FreeMASTER

安装教程:https://blog.csdn.net/WL0616/article/details/129378813

额外强调:

FreeMaster 中 Plug-in Module 显示空白的问题

解决办法:打开FreeMaster的安装目录,找到register.bat文件,以管理员的身份运行一下就好了。

使用教程:https://www.bilibili.com/video/BV17D421V7LY/

安装包:\LabNas\公共资料\软件库\FMASTERSW32.exe

2.STM32CubeMonitor

st公司开发的工具,比上一个的功能更多,类似搭积木的方法,但个人感觉多出来的功能用不上。

具体观看视频有更详细的介绍

https://www.bilibili.com/video/BV1th4y1g7Mc/

3.测试

由于网上已经有比较详细的安装教程和使用说明,我就不重复写了,我们关注一下一个很重要的问题:

使用FreeMASTER监控数据的过程是否会导致单片机执行变慢?

这是一个灵魂拷问。要是你单片机跑得好好的,但加了个FreeMASTER看看变量的变化,结果如同中断一样是不是插个任务进来打断正常的任务执行,那岂不是一个乱套了?

好消息是:不会

FreeMASTER 和调试器沟通用的是调试协议(比如 SWD、JTAG),而不是走你程序里的串口、I2C 这些"正经业务通道"。

它是通过调试接口在后台"偷看"变量的,不打断你程序的执行流程,就像后排观众戴望远镜看舞台,不会跑上台抢戏。

当然,这里也不是说完全没代价------如果你监控的变量特别多、刷新频率特别快,也可能让调试器"喘不过气",刷新速度跟不上节奏,但这只是显示延迟,MCU 本体依旧在认真打工。

一句话总结:FreeMASTER更像是一个安静的观察者,不吭声、不添乱,悄悄记录你程序的点点滴滴。

实验

口说无凭,我设计了一个简单的测试demo:思路很简单,通过硬件定时器计时一段累加变量的代码执行时间,看正常不干预的运行时间和使用FreeMASTER监控变量的运行时间是否有变化。

测试单片机:STM32F103C8T6

核心测试代码:

c 复制代码
uint32_t count = 0;

int main(void)
{

    Serial_Init();
    Timer_Init(); //1us
    TIM2->CNT = 0;
    TIM_Cmd(TIM2, ENABLE);
    for (count = 0; count < 100 * 1000; count++) {
    }
    TIM_Cmd(TIM2, DISABLE);
    Serial_Printf("cnt=%d\r\n", TIM2->CNT);

    while (1) {
    }
}

注意编译选项要选择-o0(无编译优化),防止代码中无操作的for循环被优化了

测试结果

正常运行
复制代码
cnt=52778
使用FreeMASTER监控变量
复制代码
cnt=52778

FreeMASTER监控变量count的波形图

两次测试后对比发现所消耗的时间完全相同,证明了使用FreeMASTER监控变量并不会占用MCU的运算资源。

相关推荐
GCSXP6 小时前
PT8P2104触控型8Bit MCU
单片机·嵌入式硬件
熊猫在哪6 小时前
野火鲁班猫(arrch64架构debian)从零实现用MobileFaceNet算法进行实时人脸识别(一)conda环境搭建
linux·人工智能·python·嵌入式硬件·神经网络·机器学习·边缘计算
二块烧肉8 小时前
STM32 DMA
stm32·单片机·嵌入式硬件
木人舟8 小时前
一个stm32工程从底层上都需要由哪些文件构成
stm32·单片机·嵌入式硬件
三三十二10 小时前
stm与51单片机哪个更适合新手学
单片机·嵌入式硬件·51单片机
Msshu12310 小时前
消费类,小家电产品如何做Type-C PD快充快速充电
python·单片机·嵌入式硬件·物联网·beautifulsoup·fastapi·tornado
前进的程序员10 小时前
计量单片机 RN8302:特性、使用与应用
单片机·嵌入式硬件·rn8302
长流小哥11 小时前
STM32:0.96寸OLED屏驱动全解析——SSD1306 I2C通信与显存配置指南
stm32·单片机·嵌入式硬件
深圳市雅欣控制技术有限公司12 小时前
从3.7V/5V到7.4V,FP6291在应急供电智能门锁中的应用
嵌入式硬件·升压芯片·电源管理ic·升压芯片选型·fp6291·智能门锁供电·应急电源供电方案