This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

不能运行sprintf函数

本人用CCSv5,TM4C123Gh6mz MCU,尝试用sprtinf() 将浮点数交换成字符串,程序走到sprtinf(),就出现异常如下:

1. 设置了断点,看上去正常。

2. 用步进功能走下一步,程序跑到FaultISR(void)。

另外,专门写个小程序试试:

用“单步执行”,走到sprintf(),就出这个画面。

哪位能帮帮忙,又或者用的方法实现浮点数变成字符串而不用sprintf()。

先谢了。

Ng

  • 看提示是硬件上锁了,无法跑程序吧,需要解锁,你跑其他函数看看,是不是也是这个错误了

  • 苦行僧你好,去掉sprintf()这一句,程序运行正常。

  • 孤陋寡闻,不知道有硬件上锁这事。

  • 我以前遇到过这个问题,已经解决,你可以试试。

    我用的是IAR,在project的option设置里的general options页面的library options下的printf formatter选项下选择为Auto,即可使sprintf函数正常工作。

  • 学习了,在MDK中没有碰到过这样的选项

  • sprintf()这个是纯c的语句,和硬件也应该没关系呀,我也搞不清这为什么和硬件锁住有关,可是你的截图不就是那么提示的么,感觉是你CCS配置的问题

  • 我在CCSv5那里找了一下,有个相似的,试了一下也不行。

    CCSv5的设置很多不知从何下手,现在写了个小程序对付过去。

    用CCS的人,没用这个语句吗?

  • 你好 我也遇到同样的问题,用sprintf函数用不了,请问你最后怎么实现float转字符串的呢?可以帮下我吗? 非常感谢了呢!

  • Wei ding6你好,

    我只是针对需要而写的小程序,仅供参考。

    void ftoa4int2point(float fnum, char* Txout) {
    //整数4位,小数2位
    int indata1, indata2, intthu, inthun, intten, intone, inpone, inpten; //, inphun, inpthu;

    indata1 = (int)fnum; //取整数部分
    indata2 = (int)((fnum - (float)indata1) * 100); //取小数部分,要2位
    intthu = (indata1 / 1000); //整数千位
    inthun = (indata1 - (intthu*1000)) / 100; //整数百位
    intten = (indata1 - (intthu*1000) - (inthun*100)) / 10; //整数十位
    intone = indata1 - (intthu*1000) - (inthun*100) - (intten*10); //整数个位
    inpone = indata2 / 10; //小数个位
    inpten = indata2 - inpone*10; //小数十位
    //inphun = (indata2 - inpone*1000 - inpten*100) / 10;
    //inpthu = indata2 - inpone*1000 - inpten*100 - inphun*10;

    Txout[0] = (char)(intthu + 0x30);
    Txout[1] = (char)(inthun + 0x30);
    Txout[2] = (char)(intten + 0x30);
    Txout[3] = (char)(intone + 0x30);
    Txout[4] = (char)('.');
    Txout[5] = (char)(inpone + 0x30);
    Txout[6] = (char)(inpten + 0x30);
    //Txout[7] = (char)(inpthu + 0x30);
    }

    交换后,整数部分的高位如果没有值,是用零补上,如果你不喜欢整数的左边有零,就加上几句把它们去掉吧。

    希望能帮到你。

    NgLT

  • 我也遇到了这个问题, 帮你顶一下。