注册 登录
查看: 842|回复: 16

[K60] sprintf函数在K60中的使用

[复制链接]
发表于 2014-2-24 10:28:29 | 显示全部楼层 |阅读模式
这是我写的部分程序
char DisBuf[18];Z_acc_ADC是加速度计传来的数据
site.x=55;
site.y=5;
(void)sprintf(DisBuf,"%.0f",Z_acc_ADC) ;
LCD_str(site, DisBuf , GREEN, RED);
头文件stdio.h已添加进来了。可在LCD上不显示DisBuf中的数据而且在这个界面上就卡住了
山外哥,这个问题怎样解决呢?
希望山外哥提供K60中简短使用sprintf函数在LCD上显示的程序。拜托
回复

使用道具 举报

发表于 2014-2-24 12:00:41 | 显示全部楼层
是不是还没有初始化液晶屏?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-24 12:07:29 | 显示全部楼层
祁羽彤 发表于 2014-2-24 12:00
是不是还没有初始化液晶屏?

不是,现实都是正常的,就是加运用sprintf函数后出问题
回复 支持 反对

使用道具 举报

发表于 2014-2-24 12:11:37 | 显示全部楼层
只看你一眼 发表于 2014-2-24 12:07
不是,现实都是正常的,就是加运用sprintf函数后出问题

好像山外说过IAR不支持浮点,楼主你先试试使用一个整型数据来试试?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-24 12:18:42 | 显示全部楼层
整型的也是了,也不行
回复 支持 反对

使用道具 举报

发表于 2014-2-24 12:54:10 | 显示全部楼层
只看你一眼 发表于 2014-2-24 12:18
整型的也是了,也不行

有没有校验过 DisBuf 的数据?
回复 支持 反对

使用道具 举报

发表于 2014-2-24 12:58:16 | 显示全部楼层
搞开发的,别太依赖人,要自己尝试去调
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-24 13:21:22 | 显示全部楼层
格拉姆 发表于 2014-2-24 12:58
搞开发的,别太依赖人,要自己尝试去调

这位仁兄先搞清楚状况好不好?这一看就知道做智能车中遇到的问题啊!
回复 支持 反对

使用道具 举报

发表于 2014-2-24 14:22:33 | 显示全部楼层
只看你一眼 发表于 2014-2-24 13:21
这位仁兄先搞清楚状况好不好?这一看就知道做智能车中遇到的问题啊!

我知道啊,所以才这么说。仅仅为了获奖?我也是搞过智能车的,所以才这么说。获奖没想象中的那么重要的,上学期去面试的时候,发现很多面试的都是有智能车比赛证书的,而且面试官在乎的是你在项目中的作用和学习的深入程度,而不是获得的奖项。
调一个问题,调不出来,最起码你得定位到问题的原因。是sprintf函数问题,还是液晶问题?你都可以很容易区分。看看字符串数据是否正常就直到。
如果字符串异常,说明是sprintf问题,如果是字符串正确,那么可能就是液晶问题。

IAR 的sprintf是正常的,可以使用的,包括可以输出浮点,不过printf函数却不输出浮点,这个我就搞不懂了。
下面是我测试过山外哥的工程,是可以正常打印浮点数据的。
  1.     float t= 0.333;
  2.     uint32 len;
  3.     uint32 n;
  4.     len=sprintf(imgbuff,"%.3f",t);    //sprintf 小数点转换结果为 0x0d (\r),需要转为'r'
  5.     for(n=0;n<len;n++)
  6.     {
  7.         if(imgbuff[n]=='\r')
  8.         {
  9.              imgbuff[n]='.';
  10.              break;
  11.         }
  12.     }
  13.     uart_putbuff(FIRE_PORT, imgbuff, len);
需要液晶显示,也是可以的:
  1.     float t= 0.333;
  2.     uint32 len;
  3.     uint32 n;
  4.     len=sprintf(imgbuff,"%.3f",t);    //sprintf 小数点转换结果为 0x0d (\r),需要转为'r'
  5.     for(n=0;n<len;n++)
  6.     {
  7.         if(imgbuff[n]=='\r')
  8.         {
  9.              imgbuff[n]='.';
  10.              break;
  11.         }
  12.     }
  13.     //uart_putbuff(FIRE_PORT, imgbuff, len);

  14.     LCD_init();
  15.     LCD_str(site,imgbuff,FCOLOUR,BCOLOUR);
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-24 21:26:21 | 显示全部楼层
格拉姆 发表于 2014-2-24 14:22
我知道啊,所以才这么说。仅仅为了获奖?我也是搞过智能车的,所以才这么说。获奖没想象中的那么重要的, ...

这位大哥说的对,说实话,这个问题题我已经搞了好几天了,试了很多次了,在XS128上也试了,可行在k60上却没搞好,所以才来请教的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-24 21:27:12 | 显示全部楼层
不过还要谢谢你,
回复 支持 反对

使用道具 举报

发表于 2014-2-24 23:01:20 | 显示全部楼层
只看你一眼 发表于 2014-2-24 21:26
这位大哥说的对,说实话,这个问题题我已经搞了好几天了,试了很多次了,在XS128上也试了,可行在k60上却 ...

调试的技巧不够,排除法,先定位问题的根源,才容易解决问题
回复 支持 反对

使用道具 举报

发表于 2014-2-26 16:22:03 | 显示全部楼层
格拉姆 发表于 2014-2-24 14:22
我知道啊,所以才这么说。仅仅为了获奖?我也是搞过智能车的,所以才这么说。获奖没想象中的那么重要的, ...

帅呆了,赞一个
回复 支持 反对

使用道具 举报

发表于 2014-5-1 00:49:10 来自手机 | 显示全部楼层
山外メ雲ジ 发表于 2014-2-24 23:01
调试的技巧不够,排除法,先定位问题的根源,才容易解决问题

今天我深有体会,调程序真的要有冷静的头脑,冷静的排除法,定位问题的根源!这点太重要了!
回复 支持 反对

使用道具 举报

发表于 2014-6-27 18:09:07 | 显示全部楼层
山外哥!帅呆了,赞一个
回复 支持 反对

使用道具 举报

发表于 2014-8-10 20:36:15 | 显示全部楼层
山外メ雲ジ 发表于 2014-2-24 23:01
调试的技巧不够,排除法,先定位问题的根源,才容易解决问题

山外哥..想问一个问题..谢谢哈..就是K60 使用sprintf 打印浮点数时候会进入硬件上访中断...打印整数却没有这个问题..
回复 支持 反对

使用道具 举报

发表于 2015-1-13 10:13:51 | 显示全部楼层

同样问题,请问解决了吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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