历史上的今天
返回首页

历史上的今天

今天是: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)


这样问题就解决了。

推荐阅读

史海拾趣

爱普特微(aptchip)公司的发展小趣事

爱普特微电子(APTCHIP)的创立,可追溯到XXXX年。由一群半导体行业集成电路设计领域的资深人士联合发起,他们看到了中国微处理器市场的巨大潜力和发展空间。这些专家怀揣着技术创新和自主可控的梦想,在深圳这片创新热土上,共同创立了爱普特微电子。从创立之初,公司就明确了自己的目标——成为中国最好的MCU(微控制器)公司。

Genesis Microchip公司的发展小趣事

在20世纪中期,GI作为一家新兴的电子设备制造商,以其对新兴技术的敏锐洞察力和创新精神而崭露头角。公司创始人意识到半导体技术的巨大潜力,决定投入大量资源进行研发。通过不懈努力,GI成功推出了多款基于半导体技术的创新产品,如早期的晶体管收音机和电视机,这些产品不仅在当时市场上引起了轰动,也为公司后续的快速发展奠定了坚实基础。这一阶段的成功,标志着GI在电子行业技术创新的道路上迈出了坚实的一步。

维峰电子(WCON)公司的发展小趣事

为了进一步扩大市场份额,维峰电子积极开拓国内外市场。公司通过与国内外知名企业的合作,成功进入了多个领域,包括工业控制、汽车和新能源等。特别是新能源领域,维峰电子凭借其在电子连接器方面的技术优势,成功开发出多款适用于新能源领域的产品,受到了市场的广泛认可。

FRONTIER公司的发展小趣事

背景:假设FRONTIER公司也涉足绿色能源领域。

发展故事:面对全球气候变化和环境问题的日益严峻,FRONTIER公司积极响应可持续发展号召,开始布局绿色能源产业。公司通过引进先进的光伏技术、储能技术和智能电网技术,成功打造了一系列绿色能源解决方案。这些解决方案不仅有效降低了企业的能耗和碳排放量,还为全球能源转型和环境保护做出了积极贡献。FRONTIER的绿色转型不仅赢得了市场的认可和支持,也为公司未来的可持续发展奠定了坚实基础。

Crystal Semiconductor Corp公司的发展小趣事

随着产品质量的提升和技术创新的积累,Crystal Semiconductor Corp开始积极拓展国内外市场。公司加强了与全球知名企业的合作,通过参加国际展会、举办技术研讨会等方式提升品牌知名度。同时,公司还注重客户服务,积极解决客户在使用过程中遇到的问题,赢得了良好的口碑。

Diamond SA公司的发展小趣事

随着技术的不断成熟,Diamond SA公司开始积极拓展市场。他们与全球知名的电子产品制造商建立了合作关系,将自己的芯片技术应用于各种电子设备中。同时,公司还加大了品牌推广力度,通过一系列营销活动提升了品牌知名度和美誉度。随着市场份额的逐步扩大,Diamond SA公司成为了电子行业中的领军企业。

问答坊 | AI 解惑

各位高手帮个忙

哪位大哥介绍一下加速传感器的原理和原理图  最好是能传点资料   谢谢啊!…

查看全部问答>

高薪求人才

因为不懂如何把帖子置顶,所以只好又发一遍了! 有知道置顶办法的好心人,告诉我,多谢多谢! 真心的高薪求人才! 职位描述及要求: 1. 生物医学工程、精密仪器、检测电子、电子信息工程等相关专业毕业 2、医疗工程系毕业的硕士优先考虑 2. ...…

查看全部问答>

PB5.0安装问题

安装PB5.0后建立工程, 生成的工程居然没有 OSDesign View标签. 而且编译OS时 有Invalid parameters passed to Wince.bat 错误. 这个错误网上没有搜到解决办法. 该如何解决? 谢谢.…

查看全部问答>

求助编程

    请问高手:     1.在定义了下边的变量后,怎么找到其中任意一个变量的数据页(需要赋值时,假设变量很多)?只有找到第一个变量的数据页,再查到偏移量来算吗?有没有别的方法?         &nb ...…

查看全部问答>

请教2812DEmo板的例程问题

2812的C语言例程中对寄存器的地址定义只是在CMD中定义了头地址,但是这些如GpioMuxRegsFile等如何和头文件中的GPAMUX_BITS寄存器关联上的…

查看全部问答>

关于labview进行数据分析处理显示的问题

程序代码看不懂啊,我是新手,对labview不太懂,请教高手,帮忙分析一下,求详解!万分感激!…

查看全部问答>

PCB上放一些特殊的符号

请问一下我怎样在画好的PCB板子上的顶层丝印层放一些特殊的字符呢   ??    …

查看全部问答>

MSP430 加一个红外传感器,用几个纽扣电池供电,一般能正常工作多长时间?

做一个使用时间很长不用换电池的传感器结点,对msp430还不是很熟悉,但知道它是极低功耗,但不知道能低到什么程度。 [ 本帖最后由 xiebudong 于 2012-4-28 12:14 编辑 ]…

查看全部问答>

【电源组】大家DC-DC准备用什么电路啊【电源组】

本帖最后由 paulhyde 于 2014-9-15 03:22 编辑 我用了IRF540的 可是效率才一半啊...    …

查看全部问答>

求DSP资料

谁有关于DSP软件部分的资料啊,尤其求C6000的编程指南…

查看全部问答>