如何使用keil5將stm32的hal庫編譯成lib文件——F1版本



hal庫中keil5中編譯的速度是比較慢的,相同情況下,每次都要編譯的時候,比標准庫是要慢很多的,因此就hal庫編譯成lib文件是一種加快編譯速度的方法,當然也有其自身的缺點。
一、步驟
1、使用cubemx4.27做一個簡單的系統,clock、rcc、sys、swd等配置好,其他可以不用配置。這里我使用了freertos,因此sys使用了tim6,並添加了swo的功能。

2、生成keil工程
3、去掉不相關的文件,如下圖所示

4、修改stm32f1xx_hal_conf.h文件,因為你在其他工程中,你將用到很多外設比如gpio、usart等等庫文件,而你上面生成的沒有使用任何外設,因此stm32f1xx_hal_conf.h文件很多宏定義是關掉的,這里把所有外設都打開(除了#define HAL_EXTI_MODULE_ENABLED)這個外部中斷在4.27的f1庫(1.6.1)中是沒有的,這個需要注意下,否則編譯無法生成lib文件的。

下圖羅列了部分宏定義

5、在output選項中,選中lib輸出文件,編譯即可生成lib文件,lib比較大,我的是20MB左右。

6、然后在另外的工程中,去掉hal庫文件,添加lib文件,注意將lib文件放到src目錄即可,這樣可以代替hal的源文件。

7、編譯后通過即可。雖然lib文件比較大,但是最后生成的hex文件並不大的,只是把相關用到的函數包含到keil工程中的,這個可以放心使用。

二、優缺點
優點:
加快編譯速度。文件半保密。
缺點:
調試的時候,是無法進入hal文件的,這樣底層知識就碰得少了。

總結:
lib文件可以加速編譯速度,而且是靜態文件,而且不擔心代碼被修改。穩定性是比較高的。其實可以作為半保密的文件,不給其他人看源代碼,這樣給別人代碼,也不擔心破解。但是調試的時候看不到源文件了,bug定位比較難,因此適合於調試成熟后使用。


免責聲明!

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



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