日期:2021年06月29日23小时 by gogoft
目的
TI的ccs内有画曲线的工具,做调试时相当方便。
但是stm32使用STM32CubeIDE时发现没这个工具,网上查了下,都是导出后处理文件然后在matlab内画曲线,本人比较低端matlab画曲线不熟,所以改为使用excel画曲线。
下面是方法的分享
方法
过程分2步,导出数据和excel内显示
1、数据导出为txt
程序内建立需要显示的数组,
注意导出时只能使用16进制导出,我使用的是int16_t格式,其他格式需要修改处理过程
代码如下,其中dd[512]就是我准备查看曲线的数组:
{
// int16_t dd[512];
// int ddindex;
ddindex++;
ddindex &= 511;
dd[ddindex] = (int16_t)(ddindex-256);
}
然后按下图进行导出工作,我导出到桌面的pp.txt
导出后的数据如下,是按字节排列的16进制数据,宽度固定32.
2、Excel内显示曲线
下面是excel画曲线的方法
数据显示的公式是(建议下载excel文件https://18915200822.com/sms/%E5%88%86%E6%9E%90%E6%95%B0%E6%8D%AE.xlsx):
=IF(HEX2DEC(CONCATENATE(INDEX('导入文件(文本)'!$1:$63,(INT((ROW()-5)/($B$1/2))+1),MOD((ROW()-5),$B$1/2)*2+2),INDEX('导入文件(文本)'!$1:$63,(INT((ROW()-5)/($B$1/2))+1),MOD((ROW()-5),$B$1/2)*2+1)))>32767,HEX2DEC(CONCATENATE(INDEX('导入文件(文本)'!$1:$63,(INT((ROW()-5)/($B$1/2))+1),MOD((ROW()-5),$B$1/2)*2+2),INDEX('导入文件(文本)'!$1:$63,(INT((ROW()-5)/($B$1/2))+1),MOD((ROW()-5),$B$1/2)*2+1)))-65535,HEX2DEC(CONCATENATE(INDEX('导入文件(文本)'!$1:$63,(INT((ROW()-5)/($B$1/2))+1),MOD((ROW()-5),$B$1/2)*2+2),INDEX('导入文件(文本)'!$1:$63,(INT((ROW()-5)/($B$1/2))+1),MOD((ROW()-5),$B$1/2)*2+1))))
其他
1、MDK可以使用命令方式导出数据,网上有指令,但我没实践
2、如果需要多条曲线对比,多次读出数组,然后在excel内一起画图
3、如果将串口打印做好了,可以直接串口输出为csv文件,然后直接显示