智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1352|回复: 2
打印 上一主题 下一主题

很急!IAR更改工程设置后K60烧不进程序

[复制链接]

2

主题

11

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2704
威望
1314
贡献
850
兑换币
773
注册时间
2015-11-15
在线时间
270 小时
毕业学校
NCU
跳转到指定楼层
1#
发表于 2016-2-14 16:17:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
file:///c:/users/tang/appdata/roaming/360se6/User Data/temp/160908fc4hr7y5zrg0xspm.jpg
我为了用sprintf函数让小液晶显示浮点,将printf formatter选为了FULL。
然后插上Jlink调试可以正常显示小数,但是断电再上电就又不能显示了。这等于程序根本没烧进去?
求解。
我只改了这个设置,改回原来的就完全没问题,但就不能显示浮点了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

0

主题

17

帖子

0

精华

高级会员

Rank: 4

积分
899
威望
448
贡献
281
兑换币
294
注册时间
2015-9-4
在线时间
85 小时
2#
发表于 2016-2-16 02:05:02 | 只看该作者
第二页,选library选FULL,
sprintf效率太低了,所以嵌入式C里面都很少用这个函数的...


用这个吧,比sprintf好一点的
void LED_PrintValueF(unsigned char x, unsigned char y, float data, unsigned char num)
{
        unsigned char l,m,i,j,k;  //万千百十个
        unsigned char databiti = 6; //整数位数
        unsigned int tempdataui = 0;
          int tempdataii = (int)data; //整数部分
        long int tempdatalp = (long int)((data - (int)data)*10000); //取小数位后4位
       
        //整数部分显示
        if(data < 0.0000001)  LED_P6x8Char(x, y,'-');
        else LED_P6x8Char(x, y,'+');
        if(tempdataii < 0)tempdataii = - tempdataii;  //去掉整数部分负号
        tempdataui = tempdataii;
        l  = tempdataui/10000;
        m= (tempdataui%10000)/1000;
        i = (tempdataui%1000)/100;
        j = (tempdataui%100)/10;
        k = tempdataui%10;
        if (l != 0)  //五位
        {
                LED_P6x8Char(x+6,y,l+48);
                LED_P6x8Char(x+12,y,m+48);
                LED_P6x8Char(x+18,y,i+48);
                LED_P6x8Char(x+24,y,j+48);
                LED_P6x8Char(x+30,y,k+48);
        }
        else if(m != 0) //四位
        {
                databiti = 5;
                LED_P6x8Char(x+6,y,m+48);
                LED_P6x8Char(x+12,y,i+48);
                LED_P6x8Char(x+18,y,j+48);
                LED_P6x8Char(x+24,y,k+48);
        }
          else if(i != 0) //三位
          {
                  databiti = 4;
                   LED_P6x8Char(x+6,y,i+48);
                LED_P6x8Char(x+12,y,j+48);
                LED_P6x8Char(x+18,y,k+48);
          }
          else if(j != 0) //两位
          {
                    databiti = 3;       
                  LED_P6x8Char(x+6,y,j+48);
                LED_P6x8Char(x+12,y,k+48);
          }
        else        
        {
                databiti = 2;
                LED_P6x8Char(x+6,y,k+48);
        }       
        if(tempdatalp < 0)tempdatalp = - tempdatalp;        //去掉小数部分负号
        switch(num)
        {
                case 0: break;
                case 1:  LED_PrintValueFP(x + databiti * 6, y, (unsigned int)(tempdatalp / 1000),num);break;
                case 2:  LED_PrintValueFP(x + databiti * 6, y, (unsigned int)(tempdatalp / 100),num);break;
                case 3:  LED_PrintValueFP(x + databiti * 6, y, (unsigned int)(tempdatalp / 10),num);break;
                case 4:  LED_PrintValueFP(x + databiti * 6, y, (unsigned int)(tempdatalp),num);break;                                       
        }
}
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2704
威望
1314
贡献
850
兑换币
773
注册时间
2015-11-15
在线时间
270 小时
毕业学校
NCU
3#
 楼主| 发表于 2016-2-18 15:27:20 | 只看该作者
好吃的都给你又 发表于 2016-2-16 02:05
第二页,选library选FULL,
sprintf效率太低了,所以嵌入式C里面都很少用这个函数的...

恩 多谢
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-6 15:23 , Processed in 0.060149 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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