Keil的debug模式可以可以将定义的数组保存,从而得到一定的采样数据。
参考的代码来源:
KeiL 调试时保存watchwindow的参数变量到文件_keil watch 变量_SeniorZ的博客-CSDN博客
唯一还要注意的是整数和浮点数的区分,%u还是%f根据自己的数据类型选择。我的保存设置文件形式如下:
FUNC void displayvalues(void)
{
int idx;
// displayvalues()
exec("log > Name.log");//MyValues
for (idx = 0; idx <= 200000; idx++)
{
printf ("%d %.3f\n",idx, -0.1*adc1Buf[idx]);//浮点数
//printf ("%d %u\n",idx, adc1Buf[idx]);//整数
}
exec("log off");
}
经过以上操作,我们就得到了所需数据。但会发现文本是Ini格式,需要修改后缀为txt格式以方便用软件读取。那么就需要批量修改后缀。这里我们用python进行快速处理。建议保存的文件最好按照固定名称+数字顺序进行命名,后期也方便读取。
仅需修改地址为Ini文本位置即可:
# -*- coding: utf-8 -*-
import os
f_path = r'地址'
def find_file(file_path, o_post, n_post, lis):
ls = os.listdir(file_path)
for i in ls:
son_path = os.path.join(file_path,i)
if os.path.isdir(son_path):
find_file(son_path,o_post,n_post,lis)
else:
file_post = str(i.split('.')[-1])
if file_post == o_post:
lis.append(i)
os.rename(son_path,str(son_path.split('.')[0])+'.'+n_post)
print('找到文件{srcnam},已修改成:{dicname}'.format(srcnam=son_path,dicname=str(i.split('.')[0])+'.'+n_post))
return lis
old_post = 'log'
new_post = 'txt'
print('已修改文件:',find_file(f_path, old_post, new_post, []))
此处是参考别人的代码啦,附上原文链接:
Python实现同一目录下所有log文件转为txt文件_log转txt python_李老狗在看FPGA的博客-CSDN博客
转化成txt文件后,可以用Matlab进行批量读取数据,这时候如果文件名称是按数字顺序命名就很舒服了:
%文本数据读取例子
for k=1:1:10
A=load(strcat('F:\位置\A',num2str(k),'.txt'));
data=A(:,2);
%(data数据处理)
end
参考链接如下: