请教个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、为何计算结果不正确?怎么修改?
请赐教,谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。