目錄
一、首先在Keil軟件上安裝好芯片包
二、下載官方固件庫
三、建立基于固件庫的Keil5工程模板
一、首先在Keil軟件上安裝好芯片包
????????STM32有很多系列的芯片,我們平常用的最多的是STM32F1系列的,因此安裝F1系列的芯片包在我們初學(xué)時,只按照人家下載好的來進行安裝,現(xiàn)我們可以自行安裝想要的系列的芯片包。以下就是關(guān)鍵步驟:
????????①打開Keil軟件,點擊紅框中的魔術(shù)棒
????????②點擊紅框中的Device,可以看到我之前安裝好的F1系列的芯片包,現(xiàn)我們手里的芯片不再是F1系列的芯片,想要開發(fā)F0系列的芯片,就需要安裝F0系列的芯片包
????????③若想要安裝F0或者F4系列的芯片包,點擊紅框中的地址鏈接,是keil的官網(wǎng),去官網(wǎng)下載芯片包
????????④進入該界面
????????該界面不是下載芯片包的界面,需要點擊右上角的 CMSIS Packs 進入以下界面:
?????????⑤下載方式有兩種:
????????????????(1)直接搜索你要的安裝包,比如,在所搜框輸入 STM32F0 點擊搜索:
????????????????(2)點擊Vendor下拉框,選中Keil,右邊的下拉框選擇Devices,翻頁就可以找到你想要下載的芯片包
????????⑥下載F0系列芯片包,點擊下載,隨便選擇一個文件夾
????????⑦安裝芯片包 ,找到下載好的芯片包,雙擊
????????它會自動找到你的Keil所安裝的目錄底下,所以只需要點擊next,就完成了芯片包的下載
????????若此時你已經(jīng)有一個打開的keil工程,點擊關(guān)閉時,彈出是否要重新加載芯片包,點擊確定,若此時你已經(jīng)把Keil工程關(guān)閉了,只需要重新打開keil就可以看到,已經(jīng)安裝好你想要的芯片包了
二、下載官方固件庫
????????還是以上為例,想要STM32F0系列的固件庫
????????????????(1)登陸 ST 的官網(wǎng):點擊ST官網(wǎng)
????????????????(2)點擊紅框,需要登陸該網(wǎng)站,若沒有賬號,可以自行注冊,若看不懂英文,右上角可以切換為中文
????????(3)登陸成功后,按照紅框中依次點擊 Products —> Microcontrollers&Microprocessors –> STM32 Mainstream MCUs
????????(4)頁面跳轉(zhuǎn)后,看左側(cè),找打你要下載的固件庫,例如,點擊STM32F0x1
????????(5)頁面跳轉(zhuǎn)后,點擊 Tools & Software --> MCU & MPU Embedded Software
????????(6)找到要下載的固件庫,點擊Open software page
?????????(7)頁面跳轉(zhuǎn)后,下滑,找到這里,點擊 Get lastest
????????(8)點擊ACCEPT 就可以下載標準庫
三、建立基于固件庫的Keil5工程模板
????????(1)在建立工程之前,建議用戶在電腦的某個目錄下面建立一個文件夾,后面所建立的工程都可以放在這個文件夾下面,這里我們建立一個文件夾為 Template。
????????(2)打開 keil5 ,點擊菜單:Project –>New Uvision Project?
????????????????然后將目錄定位到剛才建立的文件夾 Template 之下
????????????????在這個目錄下面建立子文件夾 USER(我們的代碼工程文件都是放在 USER目錄)
????????????????然后定位到 USER 目錄下面,我們的工程文件就都保存到 USER 文件夾下面。工程命名為Template,點擊保存
????????接下來會出現(xiàn)一個選擇 CPU 的界面,就是選擇我們的芯片型號。如圖下圖所示,根據(jù)我們自己的開發(fā)板型號,選擇對應(yīng)的芯片,以 STM32F103ZET6 為例,所以在這里我們選擇
STMicroelectronics → STM32F1 Series→ STM32F103 →STM32F103ZET6(如果使用的是其他系列的芯片,選擇相應(yīng)的型號就可以了,特別注意:一定要安裝對應(yīng)的器件芯片包?pack 才會顯示這些內(nèi)容,如果沒得選擇,請參考上邊的內(nèi)容安裝芯片包。
????????(3)點擊 OK,MDK 會彈出 Manage Run-Time Environment 對話框,如下圖所示
????????????????這是 MDK5 新增的一個功能,在這個界面,我們可以添加自己需要的組件,從而方便構(gòu)建開發(fā)環(huán)境,不過這里我們不做介紹。所以,我們直接點擊 Cancel,即可得到如下圖所示界面:
????????????????到這里,我們還只是建了一個框架,還需要添加啟動代碼,以及.c 文件等。
????????(4)現(xiàn)在我們看看 USER 目錄下面包含 2 個文件夾和 2 個文件,如下圖所示:
????????????????這里我們說明一下:
????????????????Template.uvprojx 是工程文件,非常關(guān)鍵,不能輕易刪除;
????????????????Listings 和 Objects文件夾是 MDK 自動生成的文件夾,用于存放編譯過程產(chǎn)生的中間文件。這里,我們把兩個文件夾刪除,我們會在下一步驟中新建一個 OBJ 文件夾,用來存放編譯中間文件。當然,我們不刪除這兩個文件夾也是沒有關(guān)系的,只是我們不用它而已。
????????(5)接下來,我們在 Template 工程目錄下面,新建 3 個文件夾 CORE,OBJ 以及
STM32F10x_FWLib。
????????????????CORE 用來存放核心文件和啟動文件;
????????????????OBJ 是用來存放編譯過程文件以及 hex 文件;
????????????????STM32F10x_FWLib 文件夾顧名思義用來存放 ST 官方提供的庫函數(shù)源碼文件;
????????已有的 USER 目錄除了用來放工程文件外,還用來存放主函數(shù)文件 main.c,以及其他包括 system_stm32f10x.c 等等。
????????(6)下面我們要將官方的固件庫包里的源碼文件復(fù)制到我們的工程目錄文件夾下面。打開官方固件庫包,定位到我們之前準備好的固件庫包的目錄:
STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver 下面,將目錄下面的src,inc 文件夾 copy 到我們剛才建立的 STM32F10x_FWLib 文件夾下面。src 存放的是固件的.c 文件,inc 存放的是對應(yīng)的.h 文件,不妨打開這兩個文件目錄過目一下里面的文件,每個外設(shè)對應(yīng)一個.c 文件和一個.h 頭文件。
????????(7)下面我們要將固件庫包里面相關(guān)的啟動文件復(fù)制到我們的工程目錄 CORE 之下。打開官方固件庫包,定位到目錄:
STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport 下面,將文件 core_cm3.c 和文件 core_cm3.h 復(fù)制到 CORE 下 面 去 。 然 后 定 位 到 目 錄
STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm 下面,將里面 startup_stm32f10x_hd.s (若你的開發(fā)板是 C8T6這里選擇startup_stm32f10x_md.s,若你的開發(fā)板是 RCT6這里選擇startup_stm32f10x_hd.s)文件復(fù)制到 CORE 下面。這里我們我之前已經(jīng)解釋了不同容量的芯片使用不同的啟動文件,我們的芯片STM32F103ZET6 是大容量芯片,所以選擇這個啟動文件。
FLASH容量:
STM32F103ZET6 ?512K? ? ?STM32F10X_HD
STM32F103RCT6 ?256K? ? STM32F10X_HD
STM32F103C8T6 ?64K? ? ? ?STM32F10X_MD小容量:FLASH≤32K
中容量:64K≤FLASH≤128K
大容量:256K≤FLASH
????????????????現(xiàn)在看看我們的 CORE 文件夾下面的文件:?
????????(8)定位到目錄:
STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x 下面將里面的三個文件 stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h,復(fù)制到我們的 USER目錄之下。然后將STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template下面的 4 個 文件main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h 復(fù)制到 USER 目錄下面。
????????(9)前面 8 個步驟,我們將需要的固件庫相關(guān)文件復(fù)制到了我們的工程目錄下面,下面我們將這些文件加入我們的工程中去。右鍵點擊 Target1,選擇 Manage Project Items
????????(10)Project Targets 一欄,我們將 Target 名字修改為 Template,然后在 Groups 一欄刪掉一個 Source?Group1,建立三個 Groups:USER,CORE,F(xiàn)WLIB。然后點擊 OK,可以看到我們的 Target 名字以及 Groups 情況。
????????(11)下面我們往 Group 里面添加我們需要的文件。我們按照步驟 10 的方法, 右鍵點擊點擊Tempate,選擇選擇 Manage Components。然后選擇需要添加文件的 Group,這里第一步我們選 擇 FWLIB , 然 后 點 擊 右 邊 的 Add Files,定 位 到 我 們 剛 才 建 立 的 目 錄STM32F10x_FWLib/src 下面,將里面所有的文件選中(Ctrl+A),然后點擊 Add,然后 Close??梢钥吹?Files 列表下面包含我們添加的文件。這里需要說明一下,對于我們寫代碼,如果我們只用到了其中的某個外設(shè),我們就可以不用添加沒有用到的外設(shè)的庫文件。例如我只用 GPIO,我可以只用添加 stm32f10x_gpio.c 而其他的可以不用添加。這里我們?nèi)刻砑舆M來是為了后面方便,不用每次添加,當然這樣的壞處是工程太大,編譯起來速度慢,用戶可以自行選擇。
????????????????找到剛 才 建 立 的 目 錄 STM32F10x_FWLib/src 下面
????????(12)用同樣的方法,將 Groups 定位到 CORE 和 USER 下面,添加需要的文件。這里我們的 CORE 下面需要添加的文件為 core_cm3.c,startup_stm32f10x_hd.s (注意,默認添加的時候文件類型為.c,也就是添加 startup_stm32f10x_hd.s 啟動文件的時候,你需要選擇文件類型為 All files 才能看得到這個文件),
????????????????USER 目錄下面需要添加的文件為 main.c,stm32f10x_it.c,system_stm32f10x.c.?
????????????????這樣我們需要添加的文件已經(jīng)添加到我們的工程中了,最后點擊 OK,回到工程主界面。
????????(13)接下來我們要編譯工程,在編譯之前我們首先要選擇編譯中間文件編譯后存放目錄。方法是點擊魔術(shù)棒,然后選擇 “Output” 選項下面的 “Select folder for objects…”,然后選擇目錄為我們上面新建的 OBJ 目錄。這里大家注意,如果我們不設(shè)置 Output 路徑,那么默認的編譯中間文件存放目錄就是 MDK 自動生成的 Objects 目錄和 Listings 目錄。
????????????????雙擊OBJ
????????????????點擊 OK
????????(14)下面我們點擊 編譯 按鈕 編譯工程,可以看到很多報錯,因為找不到頭文件。
????????(15)下面我們要告訴 MDK,在哪些路徑之下搜索需要的頭文件,也就是頭文件目錄。這里大家要注意,對于任何一個工程,我們都需要把工程中引用到的所有頭文件的路徑都包含到進來?;氐焦こ讨鞑藛危c擊魔術(shù)棒 ,出來一個菜單,然后點擊 c/c++選項,然后點擊Include Paths 右邊的按鈕。彈出一個添加 path 的對話框,然后我們將圖上面的 3 個目錄添加進去。記住,keil 只會在一級目錄查找,所以如果你的目錄下面還有子目錄,記得 path 一定要定位到最后一級子目錄。然后點擊 OK。
????????????????需要往下點擊出現(xiàn)藍色條框,再點擊右側(cè)的虛線框,再次添加
????????(16)接下來,我們再來編譯工程,可以看到又報了很多同樣的錯誤。為什么呢?這是因為 3.5 版本的庫函數(shù)在配置和選擇外設(shè)的時候通過宏定義來選擇的,所以我們需要配置一個全局的宏定義變量。按照步驟 16,定位到 c/c++界面,然后填寫
“STM32F10X_HD,USE_STDPERIPH_DRIVER”到 Define 輸入框里面。這里解釋一下,如果你用的是中容量那么 STM32F10X_HD 修改為?STM32F10X_MD,小容量修改為 STM32F10X_LD。然后點擊 OK。
????????STM32F103ZET6 選擇?STM32F10X_HD
????????STM32F103C8T6 選擇?STM32F10X_MD
????????(17)這次在編譯之前,我們記得打開工程 USER 下面的 main.c,刪除main.c底下的所有代碼,復(fù)制下面代碼到 main.c 中,然后進行編譯。(記得在代碼的最后面加上一個回車,否則會有警告),可以看到,這次編譯已經(jīng)成功了。
#include "stm32f10x.h"
void Delay(u32 count)
{
u32 i=0;
for(;i<count;i++);
}
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE); //使能 PB,PE 端口時鐘
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽輸出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO 口速度為 50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化 GPIOB.5
GPIO_SetBits(GPIOB,GPIO_Pin_5); //PB.5 輸出高
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED1-->PE.5 推挽輸出
GPIO_Init(GPIOE, &GPIO_InitStructure); //初始化 GPIO
GPIO_SetBits(GPIOE,GPIO_Pin_5); //PE.5 輸出高
while(1)
{
GPIO_ResetBits(GPIOB,GPIO_Pin_5);
GPIO_SetBits(GPIOE,GPIO_Pin_5);
Delay(3000000);
GPIO_SetBits(GPIOB,GPIO_Pin_5);
GPIO_ResetBits(GPIOE,GPIO_Pin_5);
Delay(3000000);
}
}
????????(18)?這樣一個工程模版建立完畢。下面還需要配置,讓編譯之后能夠生成 hex 文件。同樣點擊魔術(shù)棒,進入配置菜單,選擇 Output。然后勾上下三個選項。 其中 Create HEX file 是編譯生成 hex 文件,Browser Information 是可以查看變量和函數(shù)定義。
????????(19)重新編譯代碼,可以看到生成了 hex 文件在 OBJ 目錄下面,這個文件我們用 flymcu 下載到 mcu 即可。到這里,一個基于固件庫 V3.5 的工程模板就建立了。
????????(20)實際上經(jīng)過前面 19 個步驟,我們的工程模板已經(jīng)建立完成。但是正點原子提供的實驗中,每個實驗都有一個 SYSTEM 文件夾,下面有 3 個子目錄分別為 sys,usart,delay,存放的是我們每個實驗都要使用到的共用代碼,該代碼是由正點原子編寫,我們這里只是引入到工程中,方便后面的實驗建立工程。隨便找一個正點原子的工程文件,把底下的 SYSTEM 文件夾拷貝到我們自己建的Template文件下。
????????打開 SYSTEM 文件夾可以看到三個文件里面有三個子文件夾分別為delay,sys,usart,每個子文件夾下面都有相應(yīng)的.c 文件和.h 文件。我們接下來要將這三個目錄下面的代碼加入到我們工程中去。
????????用我們之前講解步驟 13 的辦法,在工程中新建一個組,命名為 SYSTEM,然后加入這三
個文件夾下面的.c 文件分別為 sys.c,delay.c,usart.c,如下圖:
????????然后點擊“OK”之后可以看到工程中多了一個 SYSTEM 組,下面有 3 個.c 文件。
????????接下來我們將對應(yīng)的三個目錄(sys,usart,delay)加入到 PATH 中去,因為每個目錄下面都有相應(yīng)的.h 頭文件,這請參考步驟 15 即可,加入后的截圖是:
文章來源:http://www.zghlxwxcb.cn/news/detail-764787.html
????????最后點擊 OK。這樣我們的工程模板就徹底完成了,這樣我們就可以調(diào)用正點原子提供的
SYSTEM 文件夾里面的函數(shù)。到這里,可以參考我根據(jù)以上步驟建立好的 STM32F103ZET6 工程模板:STM32F103ZET6 工程模板文章來源地址http://www.zghlxwxcb.cn/news/detail-764787.html
到了這里,關(guān)于(三)Keil安裝芯片包、下載固件庫、建立STM32工程模板的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!