TI中文支持网
TI专业的中文技术问题搜集分享网站

tms28069 printf

void dbg_printf(const char *ftm, …)
{
    static char sprint_buf[255] = {0};
    int n = 0,i = 0;

    va_list vlist;
    va_start(vlist, ftm);
    n = vsprintf(sprint_buf, ftm, vlist);
    va_end(vlist);
    for (i = 0; i < n ;i++) {
        while(SciaRegs.SCICTL2.bit.TXRDY == 0);
        SciaRegs.SCITXBUF = (int) sprint_buf[i];
    }

}

程序里 用这个映射 printf 打印函数, 打印整型  字符都很正常, 为什么打印浮点类型 系统就死了, 追到里面是 __TI_printfi 这个函数,  没法跟踪了,

请问是哪里的问题导致系统死了,  关键不知道 死在哪里,为什么死了

dbg_printf("%0.3f, %0.3f \r\n",(float)1.256, (float)3.256697);   这样系统死机

dbg_printf("%d, %d \r\n",(int)1.256, (int)3.256697);   这样系统正常

dbg_printf(“fasdfasdfasfasdf ”\r\n");   这样系统正常

gaoyang9992006:

这个函数是打印调试信息的,应该原型里没有针对浮点转换字符的格式化处理语句。

guoz:

回复 gaoyang9992006:

sprintf  这些都是c标准库里的东西,为什么在这里不能直接用, 是工程熟悉哪里没选好还是什么问题啊, 

  C 标准库里的东西,难道还要找源码 在ccs工程里 重新造轮子吗

HG:

看一下这个wiki:

http://processors.wiki.ti.com/index.php/Printf_support_in_compiler

The valid values are:

full: Supports all format specifiers. This is the default.
nofloat: Excludes support for printing floating point values. Supports all format specifiers except %f, %g, %G, %e, and %E.
minimal: Supports the printing of integer, char, or string values without width or precision flags. Specifically, only the %%, %d, %o, %c, %s, and %x format specifiers are supported

guoz:

回复 HG:

我选择 full 了啊,  还是会死机。

guoz:

回复 guoz:

赞(0)
未经允许不得转载:TI中文支持网 » tms28069 printf
分享到: 更多 (0)