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

不能运行sprintf函数

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

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

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

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

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

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

先谢了。

Ng

xyz549040622:

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

lung tat ng:

回复 xyz549040622:

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

lung tat ng:

回复 lung tat ng:

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

razi cao:

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

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

xyz549040622:

回复 razi cao:

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

xyz549040622:

回复 lung tat ng:

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

lung tat ng:

回复 razi cao:

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

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

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

wei ding6:

回复 lung tat ng:

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

lung tat ng:

回复 wei ding6:

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

songbp ruan:

回复 lung tat ng:

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

赞(0)
未经允许不得转载:TI中文支持网 » 不能运行sprintf函数
分享到: 更多 (0)