说明
因为板子没引出串口引脚,没法接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但是没输出,遂放弃