以下问题,请帮忙确认,谢谢。
同样的程序,在原来的keil MDK上就可以正常,在E2 STUDIO中,就运行不正常。
后边有两张图,第一张是E2 STUDIO运行结果,红圈那里空白,第二张是MDK运行结果,红圈那里值正常。
在E2STUDIO中vsprintf函数使用转换不了浮点型,如下图所示,代码如下:
#include <stdarg.h>
#include<stdio.h>
char buffer[80];
int vspf(char *fmt, ...)
{
va_list argptr;
int cnt;
va_start(argptr, fmt);
cnt = vsprintf(buffer, fmt, argptr);
va_end(argptr);
return(cnt);
}
int main(void)
int inumber = 30;
float fnumber = 90.0;
char string[4] = "abc";
vspf("%d %f %s", inumber, fnumber, string);
printf("%s\n", buffer);
return 0;
以下是在MDK中运行同样的程序
因为RA2E1没有FPU,所以请在工程属性中进行如下设置:
重新编译代码后,我试了可以正常打印float数据。
你好,按照这个方法实验了,会出现无法运行的问题,请帮忙把这你的这个RA2E1的工程发一下吧,谢谢。
你好,我记得我当时调试的时候也有无法运行的时候,你可以断开debugger,试试clean一下project,然后重新编译并连接debugger。
20210809_rulz_ra2e1_vprintf.zip
谢谢。
你好,现在会出现修改参数点击应用后,再重新编译或者重新打开后再编译,修改的参数变成默认值的问题。在target processor标签中修改的参数,变成默认值,请帮忙看看还有什么地方需要注意的,谢谢。
你这个问题我试验了一下,也发现了,但是似乎不影响代码的编译和执行(即不会重新编译)。我再看看怎么修复这个问题。
试着在project property里勾选这个“Use float with nano printf (-u _printf_float)”,看能否打印
谢谢
有个地方忘记提示了,使用标准库的时候,请开辟Heap空间。具体如下图:BSP==》Properties==》Heap size