搜索
bottom↓
回复: 8

[求助]uCOS-II下调用spintf()函数出错

[复制链接]

出0入0汤圆

发表于 2011-8-14 10:51:50 | 显示全部楼层 |阅读模式
我在uCOS-II中调用格式化字符串函数spintf()就崩溃,网上搜索了答案,问题应该是出在字节对齐上。uCOS-II是4字节对齐,而spintf()函数是8字节对齐,所以出错。对此我还是没有很好的办法。
不知道哪位碰到过这样的问题,希望听听你是怎么解决这个问题的。

编译环境:KEIL MDK
处理器:Cortex-M3 Lm3s1138

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2011-8-14 10:59:17 | 显示全部楼层
同样也是在论坛找到的答复:

回复【17楼】shandong  
类似问题在lpc1765 ucosii也出现了,这次堆栈字节对齐也没有用了。用的是zlg的模板。请教过zlg的技术支持也没解决,得到的答复是在mdk中不能调用sprintf函数。后来花了点时间把ucos网站上的st的一个例程修改了一下,用在我的项目中,问题解决,具体原因我还没有找到,等有时间再找。
-----------------------------------------------------------------------
难道真没办法了。。。

出0入0汤圆

发表于 2011-8-14 15:53:45 | 显示全部楼层
手动定义一个char的数组,然后使用sprintf就不会飞了。

出0入0汤圆

 楼主| 发表于 2011-8-14 17:05:35 | 显示全部楼层
回复【2楼】hzr0071  
手动定义一个char的数组,然后使用sprintf就不会飞了。
-----------------------------------------------------------------------

char cBuf[40];       
               
sprintf(cBuf, "X_%ld  ",X_Addata);
是这个意思吗?还是出错。

出0入0汤圆

发表于 2011-8-17 09:38:57 | 显示全部楼层
我曾经碰到过在main函数里使用 sprintf( buff, "%f", fVar)能得到正确的字符串(fVar 值非零),但是一旦把这行语句挪到 ucos的一个子任务里面,最后得到的字符串就是“0.0”;换成使用 “%d”就一切正常,查了任务堆栈等等没有发现问题,最终只能把这些%f的语句全部替换成%d。

出0入0汤圆

发表于 2011-8-17 09:41:43 | 显示全部楼层
sprintf()函数是哪里来的?有源码么?
见过几个版本的printf()源码,是不支持浮点输出的。。。

出0入0汤圆

发表于 2011-8-17 09:48:03 | 显示全部楼层
我用的是IAR 5.4 ,明确表示支持浮点处理的,而且也验证过了。

出0入0汤圆

 楼主| 发表于 2011-8-17 09:55:05 | 显示全部楼层
我是用的周立功的LM3S_uCOS模板,在MDK下编译的,sprintf()函数也是MDK包含的头文件stdio.h。
现在的情况是,一调用sprintf()函数就崩溃,不管格式符是%d 还是%f。仿真单步执行,到OSStart();就跳到IntDefaultHandler。

出0入0汤圆

 楼主| 发表于 2011-8-17 09:56:48 | 显示全部楼层
难道还是改用IAR?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-26 17:41

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表