FreeRTOS学习笔记01-打印浮点数卡死问题--转载
问题
在任务里使用printf("%.1f")打印浮点数时出现卡死的现象。
原因
printf("%.1f")打印浮点数时消耗了很多栈空间,堆栈空间太小。
解决
增加任务堆栈大小,或者使用FreeRTOS优化改进的printf函数。
//任务优先级
#define STORAGE_TASK_PRIO 2
//任务堆栈大小
#define STORAGE_STK_SIZE 128 //50改为128
//任务句柄
TaskHandle_t STORAGETask_Handler;
//任务函数
void storage_task(void *pvParameters);
xTaskCreate((TaskFunction_t )storage_task,
(const char* )"storage_task",
(uint16_t )STORAGE_STK_SIZE,
(void* )NULL,
(UBaseType_t )STORAGE_TASK_PRIO,
(TaskHandle_t* )&STORAGETask_Handler);
采用增加任务堆栈大小测试效果
/*******************************************************************************
* Definitions
******************************************************************************/
/* Task priorities. */
#define hello_task_PRIORITY (configMAX_PRIORITIES - 1)
#define TASK1_PRIORITY 8 //任务优先级
#define TASK1_STK_SIZE 256 //任务堆栈大小
TaskHandle_t Task1_Handle; //任务句柄
static void vTask1(void *pvParameters); //Task1任务函数
#define TASK2_PRIORITY 11 //任务优先级
#define TASK2_STK_SIZE 256 //任务堆栈大小
TaskHandle_t Task2_Handle; //任务句柄
static void vTask2(void *pvParameters); //Task1任务函数
/*******************************************************************************
* Prototypes
******************************************************************************/
static void hello_task(void *pvParameters); //hello_task任务函数
TaskHandle_t Hello_Task_Handle; //任务句柄
原文链接:
https://blog.csdn.net/p1279030826/article/details/102476622