新手入门
- 积分
- 12
- 金钱
- 12
- 注册时间
- 2017-7-29
- 在线时间
- 2 小时
|
1金钱
各位大侠您们好
有个新问题请教,我要是用 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 还是不对啊
找各位大侠,高手指导下 实在不行,我只能自己编写程序转换了
|
|