IAR调试时输出文本数据到电脑(未使用串口)

说明

因为板子没引出串口引脚,没法接USB转TTL,又想要长时间运行程序并保存某些特定数据,所以找到了这个办法。为了写数据到本机,所以板子必须运行在IAR的debug模式下。

参考:IAR环境下变量导出方法:https://www.amobbs.com/thread-5515528-1-1.html

原理:

其实就是用写入文件的办法,把数据从内存写到文件里。这个文件是建立在调试主机(也就是PC机)硬盘上的。接口是调试器的半主机接口(细节不用管,只要按照打开文件、读写文件、关闭文件的方法操作即可)。这样就解决了大量内存变量dump到主机的问题。

注意IAR工程要配置成半主机(默认就是semihosted)

代码

debugData加到需要输出数据的位置即可

#include <stdio.h>

/* 添加到主程序循环里就行 */
void debugData(void)
{
	FILE *buf;
	uint16_t wNums;

	unsigned char sbuf[30];
	uint16_t wI;

	if ((buf = fopen("afile.c", "a+")) != NULL)//保存的文件在工程目录下 afile.c
	{
		// Pressure_Data是需要输出的全局变量
		wNums = sprintf(sbuf, "Pressure = %.3f\n", Pressure_Data);	
		fwrite(sbuf, wNums, 1, buf);
		fclose(buf);
	}
}

原帖里的代码 写文件fopen是 w+ 覆盖写入,我根据自己需要改成了追加写入 a+

fopen使用可参考:fopen中w w+ wb区别:https://blog.csdn.net/guyue6670/article/details/6681037

运行结果

IAR工程文件夹下多出了“afile.c”文件
在这里插入图片描述

打开如图
在这里插入图片描述


虽然没测过,但我想这种方式应该会拖慢运行速度,所以能用串口还是用串口吧
试过IAR的Terminal I/O但是没输出,遂放弃

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值