问题描述
在FreeRTOS中定义了一个任务,打印浮点数。
/*!
\brief LogPrint Func Runing
\param[in] none
\param[out] none
\retval none
*/
static void LogPrint(void)
{
float i=3.1415f;
int b=10;
while(1)
{
vTaskDelay(1000);
printf("\r\nLogPrinting ............\n");
printf("\r\n %f\n ",i);
}
}
但是执行之后就会进入硬件错误。网上其他人的观点如下:
- 栈空间太小,然而我定义的栈为128*2Byte已经非常大了。
- 栈空间未对齐,打开portmacro.h文件后可以看到portBYTE_ALIGNMENT配置为8,已经设置为8字节对齐了。
解决方法:
我的解决方案是,将FreeRTOS从9升级到10.0LTS版本,最后完美解决了。
注意选择port时选择配置了FPU的文件:
(我这个FreeRTOS是从CM3的项目移植过来的,芯片使用的是CM4所以出错了,唉脑子真是歪特了)