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