FreeRTOS列印浮點數卡死問題

2021-09-28 11:40:43 字數 656 閱讀 4719

問題:在任務裡使用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);

浮點數 儲存

關鍵字 體系結構 ieee754 浮點數 儲存 main 如果不執行上面的 讓我們來直接判斷,輸出的結果會是什麼?而在你執行程式之後,結果卻很讓人詫異 123.456001。為什麼會是123.456001?有六位小數可以理解,最後那個1是為何?有很多人解釋說最後那個1是亂碼,隨機的。嘿嘿 其實無論你...

浮點數操作

float fx 49.03f int nx fx 100 printf d nx 執行上述 結果 4902。用vc6.0,2005,gcc編譯執行結果都是一樣。為什麼會這樣呢,是因為浮點數運算具有不精確性。其實編譯上面的 編譯器會有警告的。warning c4244 initializing co...

浮點數比較

在數 算當中經常會涉及到判斷兩個數是否相等的情況 對於整數很好處理 a b這樣的乙個語句就可以解決全部的問題 但是對於浮點數是不同的 首先,浮點數在計算機當中的二進位制表達方式就決定了大多數浮點數都是無法精確的表達的 現在的計算機大部分都是數字計算機,不是模擬機,數字機的離散化的資料表示方法自然無法...