智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 3773|回复: 3
打印 上一主题 下一主题

[软件类] sprintf函数是单片机复位

[复制链接]

2

主题

29

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
368
QQ
威望
285
贡献
39
兑换币
6
注册时间
2010-9-15
在线时间
22 小时
跳转到指定楼层
1#
发表于 2011-4-16 12:36:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
3贡献
不知道大家有没有使用sprintf函数去把整形变量放到字符串里面,然后窗口发送。
当我的程序调用sprintf函数到一定次数单片机就复位了。

最佳答案

查看完整内容

我也遇到过这样的问题, 原因是:sprintf运行花费了太多的时间,可能一句sprintf在单片机里需要运行一二十ms, 这个时候你的狗在起作用,运行了很长时间的sprintf没时间踢狗了,就会引起复位。 解决方法:在单片机中不要用sprintf,会浪费太多时间,想办法用其他的函数代替。 希望能对你有帮助。

0

主题

1

帖子

0

精华

注册会员

Rank: 2

积分
110
威望
171
贡献
29
兑换币
0
注册时间
2011-5-18
在线时间
0 小时
2#
发表于 2011-4-16 12:36:24 | 只看该作者
我也遇到过这样的问题,
原因是:sprintf运行花费了太多的时间,可能一句sprintf在单片机里需要运行一二十ms, 这个时候你的狗在起作用,运行了很长时间的sprintf没时间踢狗了,就会引起复位。

解决方法:在单片机中不要用sprintf,会浪费太多时间,想办法用其他的函数代替。

希望能对你有帮助。
回复

使用道具 举报

7

主题

255

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2079
QQ
威望
966
贡献
815
兑换币
24
注册时间
2011-3-4
在线时间
149 小时
3#
发表于 2011-4-21 17:25:23 | 只看该作者
没有遇的过
回复

使用道具 举报

4

主题

33

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
411
威望
282
贡献
43
兑换币
0
注册时间
2011-3-31
在线时间
43 小时
4#
发表于 2011-4-21 17:53:59 | 只看该作者
char s[10];
void sendfloat(float fl)
{
   unsigned char fjx;
   sprintf(s,"%.3f",fl);
   fjx=0;
   while(s[fjx])
   {
    uartput(s[fjx]);
    fjx++;
   }
   for(fjx=0;fjx<10;fjx++)
   s[fjx]=0;
}
我sprintf 发float 一切正常啊
回复

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-21 11:14 , Processed in 0.051800 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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