请教个UCOS浮点计算的问题

2019-07-20 23:43发布

原来的工程设置好FPU和相关的库后使用函数arm_sqrt_f32()能计算出正确的结果,根据“STM32F4 UCOS开发手册_V3.0”写好例程后,原例程正常运行,可看到已使用FPU。然后我在LED0任务中加入了浮点开方计算,程序就死掉了,加大堆栈到1024也不行,只有将arm_sqrt_f32(2,temp)中的变量*temp设置为全局变量才可以继续运行,但问题是计算的结果始终为0,不知何故?以下为源码:
//LED0任务
void led0_task(void *pdata)
{                
        pdata=pdata;
        while(1)
        {
                arm_sqrt_f32(2,temp);//使用FPU计算2的平方根
                temp1=(u32)(*temp*1000);//浮点数强制转换为整数
                LCD_ShowxNum(110,600,temp1,4,16,0X80);
                LED0=0;
                delay_ms(80);
                LED0=1;
                delay_ms(920);
        };
}

请教两个问题:
1、如果不设置为全局变量要怎么做?
2、为何计算结果不正确?怎么修改?
请赐教,谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
ofourme
1楼-- · 2019-07-21 05:03
temp是指针?
lrser
2楼-- · 2019-07-21 08:41
 精彩回答 2  元偷偷看……
aozima
3楼-- · 2019-07-21 11:20
浮点要求栈是8字节对齐。
lrser
4楼-- · 2019-07-21 14:16
 精彩回答 2  元偷偷看……
aozima
5楼-- · 2019-07-21 19:47
lrser 发表于 2016-2-25 10:07
堆栈设置的256、512、1024都不行。

地址,不是大小。
0-256是256字节,2-258也是256字节。
lrser
6楼-- · 2019-07-21 22:55
aozima 发表于 2016-2-25 10:46
地址,不是大小。
0-256是256字节,2-258也是256字节。

请问这个堆栈地址如何设置?

一周热门 更多>