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


&spm=1001.2101.3001.5002&articleId=143802381&d=1&t=3&u=ee9d55fcc113411d983768c6aaa0e64f)
4754

被折叠的 条评论
为什么被折叠?



