打印

IAR环境下变量导出方法 适合离散数据

[复制链接]
1209|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pjzmj2012|  楼主 | 2014-12-26 08:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
IAR下调试程序观察变量可以通过watch窗口,但是要将变量输出到外部,比如说excel进行分析的话,少量数据还可以人肉操作,如果一个10240长度的数组需要输出的话,我只能哇的一声口吐鲜血了!
网上也流传了一些方法,有串口输出法,memory区域导出法(需要专门转换程序,但我没找到),抓屏软件捕获法等等。
习惯使用mplab调试环境下的watch右键另存功能,换到IAR下惊叹如此好的集成环境竟然不支持这项功能。
这里提供一种另存文件的方法,可能很多人使用过,见笑了。
举例说明:
#include <stdio.h>

INT16U wpRealTimeData[64];//要导出的数组
void debugtemp(void)
{
        FILE *buf;
        INT16U wNums;

        unsigned char sbuf[30];
        INT16U wI;

        if ((buf = fopen("afile.c", "w+")) != NULL)//保存的文件在工程目录下 afile.c
        {
                for (wI=0; wI<64; wI++)
                {
                        
                        wData = wpRealTimeData[wI];
                        wNums=sprintf(sbuf,"No%4d: = %d\n", wI, wData);
                        fwrite(sbuf, wNums,1, buf);
                }
                fclose(buf);
        }
}
复制代码
在调试工程中需要数据导出时调用 debugtemp();
查看文件afile.c就可以看到结果了.

相关帖子

沙发
pjzmj2012|  楼主 | 2014-12-26 08:45 | 只看该作者
本帖最后由 pjzmj2012 于 2014-12-26 10:53 编辑

r 以只读方式打开文件,该文件必须存在。

  r+ 以可读写方式打开文件,该文件必须存在。

  rb+ 读写打开一个二进制文件,只允许读写数据。

  rt+ 读写打开一个文本文件,允许读和写。

  w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。

  w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。

  a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)

  a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)

  wb 只写打开或新建一个二进制文件;只允许写数据。

  wb+ 读写打开或建立一个二进制文件,允许读和写。

  wt+ 读写打开或着建立一个文本文件;允许读写。
@远去的**
  at+ 读写打开一个文本文件,允许读或在文本末追加数据。
  ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。





使用特权

评论回复
板凳
pjzmj2012|  楼主 | 2014-12-26 08:52 | 只看该作者
本帖最后由 pjzmj2012 于 2014-12-26 10:43 编辑

%d代表输出的是整型数
\n代表是回车换行
\t代表是水平制表符,在水平位置上打出多个空格
\b代表是Backspace,即回退一格

%4d:4为指定的输出字段的宽度。如果数据的位数小于4,则左端补以空格,若大于4,则按实际位数输出。

不知道No是什么意思,知道的给吱一声。

@dirtwillfly @jlass @ytfdhb @airwill @不亦心 @huangxz @王奉瑾 @jjjyufan @pa2792 @远去的**

使用特权

评论回复
地板
dirtwillfly| | 2014-12-26 10:55 | 只看该作者
长见识了,第一次见导出变量的

使用特权

评论回复
5
dirtwillfly| | 2014-12-26 10:55 | 只看该作者
觉得楼主可以参考下逆向工程里跟踪变量的方法

使用特权

评论回复
6
不亦心| | 2014-12-26 13:26 | 只看该作者
爱莫能助,不碰软件很多年
可以去狼窝问一下@原野之狼  

使用特权

评论回复
7
huangxz| | 2014-12-26 13:46 | 只看该作者
楼主你这个file怎么打开的啊,在哪里存在啊,单片机吗

使用特权

评论回复
8
le062| | 2014-12-27 00:29 | 只看该作者
还能这么fopen,
长知识了

使用特权

评论回复
9
le062| | 2014-12-27 00:39 | 只看该作者
测了一下,发现lz在扯淡
并不是说不能在单片机上实现fopen,并存入数据
但要做到这一点的话,需要一个基本的文件系统加上重写__open,__close,__write,__read。

使用特权

评论回复
10
le062| | 2014-12-27 01:01 | 只看该作者
IAR最简单导出数据方法:
调试中,暂停,View->Memory->在Memory区域右击->Memory Save
->选择数据格式及起止地址,导出
数据格式是hex的

使用特权

评论回复
11
slim443| | 2014-12-27 16:11 | 只看该作者
这个方法牛啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

131

帖子

1

粉丝