历史上的今天
今天是:2024年12月14日(星期六)
2018年12月14日 | 关于keil中sprintf()函数死机的问题
2018-12-14 来源:eefocus
前段时间在使用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)
这样问题就解决了。
史海拾趣
|
2812的C语言例程中对寄存器的地址定义只是在CMD中定义了头地址,但是这些如GpioMuxRegsFile等如何和头文件中的GPAMUX_BITS寄存器关联上的… 查看全部问答> |
|
MSP430 加一个红外传感器,用几个纽扣电池供电,一般能正常工作多长时间? 做一个使用时间很长不用换电池的传感器结点,对msp430还不是很熟悉,但知道它是极低功耗,但不知道能低到什么程度。 [ 本帖最后由 xiebudong 于 2012-4-28 12:14 编辑 ]… 查看全部问答> |




