前段时间在使用KEIL V4 来给我的LPC1768单片机编写程序,但程序总是有bug,经常有时候能运行,有时候又会死机,跟踪调试了一下,发现每次都在sprintf()函数这边出问题,到这地方程序就死掉了,这一句基本形式如下面这样:
sprintf(str,"%0.2f",val);
什么原因呢?我以前用KEIL V2 给stc单片机开发过商业软件,这地方还没出现过问题,难道V4 的arm版本就不行了,网上搜索了下,遇到问题的人不少,有用的答案很少。
通过长时间的摸索,好像是这个版本里不能用sprintf()函数将浮点型数值格式化为字符串。经过我多天的调试,并不是说这个函数不能运行,是偶尔能运行的。但是如果用这个函数将一个整形数格式化为字符串是没问题的,所以不妨把程序稍微改改就可以用了,比如讲float a=12.356;格式化成char str="12.356",改成下面这样就行了
sprintf(str,''%d.%03d",(unsigned int)a,(unsigned int)(a-(unsigned int )a)*1000)
这样问题就解决了。
相互关注,共同进步!
在使用KEILV4为LPC1768单片机编程时,遇到sprintf()函数导致程序偶尔死机的问题。本文详细介绍了问题现象及解决方法,通过调整函数调用方式成功避免了死机情况。
2598

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



