關於keil中生成lib和使用的記錄

2021-07-22 23:57:18 字數 1039 閱讀 7715

這兩天在使用一款向量字型檔晶元,通訊用的是spi,主控stm32f4,中途遇到一點小問題,也體現了自己的才疏學淺。下面是問題:

對方技術人員提供的驅動是靜態庫lib和標頭檔案,其中標頭檔案中cs有段內容如下:

//gpio_spi_nand_flash:片選埠gpioa-gpiog

//gpio_cs:片選管腳gpio_pin_0-gpio_pin_15

//這兩個值在標頭檔案中定義便於自定義

#define cs_l gpio_resetbits(gpio_spi_nand_flash,gpio_cs);

#define cs_h gpio_setbits(gpio_spi_nand_flash,gpio_cs);

其中

#define gpio_cs                 gpio_pin_2

#define gpio_spi_nand_flash gpioa

然後他跟我說在這個標頭檔案裡可以根據需要修改巨集定義成自己的管腳,然後我就試了下,發現不行,糾結了好一會兒,終於發現問題所在:

在生成lib庫的時候,傳檔案中呼叫cs_l和cs_h這兩個巨集定義的地方就已經被直接替換成了

#define		cs_l	pio_resetbits(gpioa,gpio_pin_2);	

#define cs_h gpio_setbits(gpioa,gpio_pin_2);

當你使用這個lib的時候,再去修改標頭檔案裡相關定義當然沒什麼效果了,這麼簡單的問題竟然困擾了小半天,真是。

extern void cs_reset(void);		//使用者構造片選訊號拉低功能

extern void cs_set(void); //使用者構造片選訊號置高功能

#define cs_l cs_reset()

#define cs_h cs_set()

其中cs_reset()和cs_set()兩個函式需要使用者自己構造,順帶也擴充套件了使用範圍。

C 生成和使用dll和lib

dll和lib 動態鏈結庫 dll 是乙個可以被其他應用程式共享的程式模組,其中封裝了一些可以被共享的例程和資源。和可執行檔案 exe 非常類似,區別在於dll中雖然包含了可執行 卻不能單獨執行,而應由windows應用程式直接或間接呼叫。靜態鏈結庫 lib 包含函式 本身,在編譯時直接將 加入程式...

Keil MDK生成LIB庫以及使用LIB庫

問題引出 為什麼要做成lib庫?1 不想將自己寫的源 公開,但是同時庫檔案又需要讓別人能夠正常呼叫,那封裝成lib的格式就是乙個方法。2 編譯某些工程檔案時非常耗時,像st官方的庫時,由於檔案眾多,編譯一次可能得1兩分鐘,這時可以打包成庫,節省不少的時間。但同時也不能用右鍵go to definit...

使用KEIL , 生成BIN檔案

我的電腦裡的路徑是 d keil v5 arm armcc bin fromelf.exe 我的示例工程裡的檔案目錄是 iot bootloader rtos ps 代表keil工程檔案所在目錄 fromelf.exe檔案路徑 檔名 bin o 生成bin檔案存放路徑 檔名 keil編譯生成的.ax...