OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8871|回复: 5

sprintf函数转换浮点型数据会变成0.00 ??

[复制链接]

102

主题

318

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
1876
金钱
1876
注册时间
2011-12-21
在线时间
545 小时
发表于 2012-10-24 15:12:20 | 显示全部楼层 |阅读模式
用sprintf函数,比如:
float ADCaver;
char ADC_Str[15];

sprintf((char *)ADC_Str,"%-5.3f",ADCaver);
这个函数如果在main里执行很正常,转换整形的话也正常,但是如果在中断里调用这个函数,转换浮点型的话就会出问题。转换结果ADC_Str=0.00
请问这是怎么回事啊?网上说是因为没有字节对齐,我添加了#pragma pack(8)没有效果。

请帮回答下,多谢!!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

27

主题

148

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
276
金钱
276
注册时间
2012-7-25
在线时间
0 小时
发表于 2012-10-24 16:36:50 | 显示全部楼层
回复【楼主位】玻璃之城2046:
---------------------------------
sprintf在中断里调用,一般不能这么做吧,这个比较耗时间也比较耗RAM。

另外你的ADC_Str是定义在什么地方的,不会是在中断里定义的吧。

代码也贴出来。
回复 支持 反对

使用道具 举报

102

主题

318

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
1876
金钱
1876
注册时间
2011-12-21
在线时间
545 小时
 楼主| 发表于 2012-10-24 18:03:04 | 显示全部楼层
回复【2楼】maninman1981:
---------------------------------
我要实现固定格式输出字符串,除了sprintf还有其他办法没有?
ADC_Str是个全局变量,在中断里和主函数里定义效果一样  试过了。
代码太长不大方便
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2012-10-24 18:39:57 | 显示全部楼层
回复【3楼】玻璃之城2046:
---------------------------------
仿真看看。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2019-4-29
在线时间
22 小时
发表于 2019-11-6 15:22:23 | 显示全部楼层
楼主,最后找到原因了吗,请教一下
回复 支持 反对

使用道具 举报

102

主题

318

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
1876
金钱
1876
注册时间
2011-12-21
在线时间
545 小时
 楼主| 发表于 2019-11-7 09:36:23 | 显示全部楼层
筱lhy 发表于 2019-11-6 15:22
楼主,最后找到原因了吗,请教一下

几年前的帖子了,当时的程序已经找不到了。刚才重新写了一段执行是没有问题的,应该是当时有逻辑问题。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-28 01:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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