OpenEdv-开源电子网

标题: printf函数和STemwin 里的GUI_TOUCH_Exec()函数起冲突,什么原因? [打印本页]

作者: xuyejin    时间: 2017-7-29 09:23
标题: printf函数和STemwin 里的GUI_TOUCH_Exec()函数起冲突,什么原因?
各位大侠您们好

           有个新问题请教,我要是用 sprintf显示字符,为什么%d,%s都可以,而%f一直都是0.000000?
后来发现是调用stemwin里的GUI_TOUCH_Exec()函数有冲突,当不调用GUI_TOUCH_Exec()函数时,sprintf函数的使用就正常,如果一调用,就会出现上面的问题,还有大侠指教下啊?谢谢


for( ; ; )
        {
                GUI_TOUCH_Exec();

                GUI_Exec();

                GUI_Delay(10);        
        }        


后来,我试了好多种方法,加到堆栈长度,
在startup_stm32f2xx.s中 原来  
Stack_Size      EQU     0x00000400
Heap_Size       EQU     0x00000200

我给改成
Stack_Size      EQU     0x00001000
Heap_Size       EQU     0x00000800扩大了4倍还是不行


增加了sprintf的第一个函数的长度,并监控打印的长度,程序如下
char bStr[256];
        float  temp;
        int msize;


        for(i=0; i<nCH; i++)
        {
                LISTVIEW_SetItemText(hDlgListView, 1,  i, TRAINSTATUS[StateUn.Current.CH_Para.TrainState]);


                //temp = StateUn.Current.CH_Para.TrainDura/1000.0;
                //temp =1000.0;
                msize = sprintf(bStr, "%f", 1000.0);
                if(msize < 12)
                LISTVIEW_SetItemText(hDlgListView, 2,  i, bStr);
                else
                LISTVIEW_SetItemText(hDlgListView, 2,  i, "Error");       



运行后,msize = 8  bstr数组中是0.000000   还是不对啊
找各位大侠,高手指导下    实在不行,我只能自己编写程序转换了



作者: 正点原子    时间: 2017-7-29 22:40
帮顶
作者: xuyejin    时间: 2017-7-31 08:48
喂 喂 喂 ,各位大侠,都来看看怎么回事情啊?
作者: 正点原子    时间: 2017-8-1 00:57
帮顶
作者: wlq19911021    时间: 2017-8-1 13:27
CRC漏开了吧,同学




欢迎光临 OpenEdv-开源电子网 (http://www.openedv.com/) Powered by Discuz! X3.4