原来的工程设置好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、为何计算结果不正确?怎么修改?
请赐教,谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
请问这个堆栈地址如何设置?
一周热门 更多>