我使用的是NXP的cortex-m3芯片LPC1768作為主控芯片,經過研究反復研究和實驗,修改startup.s代碼中的stack_size和heap_size的大小都無濟於事,任然出現奇怪的現象,即在單步調試的時候,只能執行一次,並且這次得到的結果是正確的,然後就立即出現硬件錯誤,進入匯編語言的硬件錯誤死循環;如果全速運行,那麼每次得到的結果都是0.00000,沒有一次能得到正確結果,但是並沒有死機,感覺應該是該sprintf %f的功能不正確而已,也不至於死機,不過偶爾確實有錯誤數據返回,但並沒有什麼規律。 基於此,在網上找了好久,終於弄明白,應該是這類微控制器不支持sprintf %f,因為這個操作太耗時,耗資源,不值得,很多微控制器都無法滿足它的要求,故arm-gcc沒有提供該支持或者支持得很不好,不過它也給出了湊合的解決辦法,比較簡單,模擬效果實現的。實現代碼參考如下: www.2cto.com When using GCC compiler, due to internal standard C library architecture, it is strongly not recommended to use the "%f" mode in the wm_sprintf function in order to convert a float variable to a string. This leads to an ARM exception (product reset). [cpp] float float_num; uint8_t str_temp[128]; sprintf(str_temp,"%d.%03d",(uint32_t)float_num,(uint32_t)((float_num * 1000) - (uint32_t)(float_num) * 1000));//(實現三位小數轉換)