keil5 仿真時發現函數不能進入到main函數


  在做開發的時候發現一個問題,使用keil5進行仿真的時候,不能進入到main函數,點擊全速運行,馬上就會停止,且出現如下提示:

 

初步原因:程序中有涉及到 printf 這個使用方法,但是沒有具體實現

解決方法: 1:屏蔽掉代碼中所有與 printf 使用相關的代碼;

      2:在項目設置中 選擇 target選項卡 然后選擇 USE Mcrolib 這樣就可以

 

”Use MicroLIB”是KEIL自帶的一個簡易的庫。

keil中的microlib 是缺省 C 庫的備選庫。 它用於必須在極少量內存環境下運行的深層嵌入式應用程序。 這些應用程序不在操作系統中運行。microlib 不會嘗試成為符合標准的 ISO C 庫。 

microlib 進行了高度優化以使代碼變得很小。 它的功能比缺省 C 庫少,並且根本不具備某些 ISO C 特性。某些庫函數的運行速度也比較慢,例如,memcpy()。 

microlib 與缺省 C 庫之間的主要差異是: 

microlib 不符合 ISO C 庫標准。 不支持某些 ISO 特性,並且其他特性具有的功能也較少。 

microlib 不符合 IEEE 754 二進制浮點算法標准。 

microlib 進行了高度優化以使代碼變得很小。 

無法對區域設置進行配置。 缺省 C 區域設置是唯一可用的區域設置。 

不能將 main() 聲明為使用參數,並且不能返回內容。 

不支持 stdio,但未緩沖的 stdin、stdout 和 stderr 除外。 

microlib 對 C99 函數提供有限的支持。 

microlib 不支持操作系統函數。 

microlib 不支持與位置無關的代碼。 

microlib 不提供互斥鎖來防止非線程安全的代碼。 

microlib 不支持寬字符或多字節字符串。 

與 stdlib 不同,microlib 不支持可選擇的單或雙區內存模型。 microlib 只提供雙區內存模型,即單獨的堆棧和堆區。 

可以合理地將 microlib 與 --fpmode=std 或 --fpmode=fast 配合使用。 
microlib 中的函數負責: 

創建一個可在其中執行 C 程序的環境。 這包括: 

創建一個堆棧 

創建一個堆(如果需要) 

初始化程序所用的庫的部分組成內容。 

調用 main() 以開始執行程序。 

要使用 microlib 構建程序,必須使用命令行選項 ??library_type=microlib。 根據需要,編譯器、匯編程序或鏈接器可使用此選項處理不同的文件。 將此選項與鏈接器配合使用時,將覆蓋所有其他選項。

 

原文鏈接:https://blog.csdn.net/Kelsey11/article/details/51246636

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM