1. 程式人生 > >STM32開發環境使用Keil MDK 同時進行51開發

STM32開發環境使用Keil MDK 同時進行51開發

配置51環境·:

  

開發環境的搭建:

STM32開發環境使用Keil MDK進行,那怎麼使用MDK建立一個工程呢?

MDK下載

跳轉到下載介面,填入必要的資訊:
MDK下載資訊輸入

然後在頁面下方點選提交按鈕:
提交按鈕

如果填寫的資訊,符合要求,在本頁面將會顯示下載連線:
MDK下載連結

點選下載MDK(可以看到夏農這裡的MDK版本是MDK520,大概有567M的樣子)

MDK安裝

下載完成之後點選安裝:
軟體安裝介面1
軟體安裝介面2
選擇安裝目錄,根據自己的需求定義,
軟體安裝介面3
隨便填一些使用者資訊…
軟體安裝介面4
安裝程式從當前開始安裝,等待安裝完成.
軟體安裝介面5
如果提示安裝驅動,如果需要使用到ULink進行程式的燒錄除錯,則選擇是,如果不需要選擇否就可以了。
軟體安裝介面6
MDK安裝完成介面如下所示,點選finnish:
軟體安裝介面7


彈出如下介面,取消選擇show the dialog at startup,點選OK
軟體安裝介面8
此時在介面左方的樹形列表中,ALL Devices列表下,只有一個ARM選項,等待程式重新整理獲取所有的裝置列表:
軟體安裝介面9
展開裝置STMicroelectronics選項,將會看到所有型別的STM32系列裝置,根據需要選擇對應系列的裝置,筆者這裡選擇F103系列,然後可以在右邊的packs下看到對應的驅動包,點選Install下載安裝當前還未下載安裝的驅動包,直到所有的選項驅動包安裝完成,右邊所有按鈕變成灰色,關閉介面,此時在桌面上可以看到Keil MDK的快捷方式。
軟體安裝介面10

MDK破解:::一次用註冊機產生密碼,在license裡可能不可以啟用。第一次執行一定要記住,要以管理員的身份執行mdk。以管理員的身份執行,註冊成功。

接下來我們就是要進行軟體的破解了,在網上下載一個破解軟體KEIL_Lic(網上有很多),以管理員身份開啟我們剛剛裝好的MDK軟體,File–>License Management
註冊方式

複製右邊CID編輯框中的字串,然後開啟下載好的KeiL_Lic
這裡寫圖片描述
將剛剛複製的CID字串貼上到Keil_Lic的CID編輯框中,Target選擇ARM,點選Generate按鈕會在編輯框中生成註冊碼,我們將該註冊碼複製,並貼上到License Management中的New License ID Code(LIC)中點選Add LIC,在下方的編輯框中提示新增成功,表示軟體破解成功。
Keil_Lic介面

MDK 建立工程

關閉Keil_Lic和License Management,此時我們已經完成了開發環境的搭建以及破解,

如何建立STM32工程

新建工程

方式一:

現在我們開始建立STM32工程,點選開啟我們剛剛安裝的Keil MDK軟體,點選選單欄Project選擇New uVision Project
準備開始建立工程
彈出對話方塊,選擇存放工程的目錄,並且在輸入框內要建的工程名(指定工程名,不帶字尾),這裡我我輸入Test,點選儲存按鈕將會彈出裝置選擇介面。
指定工程名

選擇主控

在此介面選擇要使用的STM32主控型號,筆者用的是STM32F103C8T6,就在STMiroelectronics中選擇STM32F1 Series ,接著選擇STM32F103,展開就可以看到我使用的STM32F103C8T6,點選選擇,會在介面較靠上位置的Device:顯示到我們選擇的裝置型號,筆者附上的圖片可以清晰的看到STM32F103C8字樣,點選OK按鈕,確認選擇。
選擇裝置

載入外設驅動

確認好要使用的裝置後,會彈出Manage Run-Time Environment介面,這裡需要配置我們使用STM32程式開發,需要用到的一些STM32外設功能,首先勾選幾個最基本的選項,展開分支CMSIS勾選CORE和分支Device勾選Startup和GPIO,然後展開分支StdPeriph Driver在該分支下選擇需要使用到的STM32外設,這裡筆者以最常使用到的外設GPIO和USART為例子。
裝置環境

當我們選擇了GPIO和USART後,在左下角的Validation Output會出現黃色的感嘆號,提示是需要一些載入RCC驅動和Framework我們在列表中勾選上就好了,如果還有感嘆號,直接雙擊列表上對應的第三級選項,可以在上方驅動列表中直接找到所需的裝置驅動,勾選上就好,選擇完成之後,點選OK,便會在指定目錄下建立工程了。
裝置外設選擇

例如stm32f103c8t6選擇:

新建檔案

我們可以在Project欄中看到我們建立好的工程目錄,要編寫STM32程式碼,我們需要新建一個檔案,可以直接點選選單欄File 選擇New 或者 點選選單欄File下類似白紙的圖示(應該是File下第一個圖示)或者直接按下快捷鍵CTRL + N便可以新建一個空白文件,預設該文件是在我們的程式設計區開啟的。
新建檔案
我們新建完檔案之後需要將檔案儲存到本地檔案中,我們點選選單欄File 選擇Save as或者 點選選單欄File下儲存圖示(應該是File下第三個圖示)或者直接按下快捷鍵CTRL + S
儲存檔案
接下來,我們需要選擇儲存檔案路徑,這裡直接選擇工程目錄即可(如果不存放在工程目錄下,需要在Options for Target 面板上選擇C/C++選項卡,在Include Paths中將選擇好的目錄新增進去),接下來我們需要修改檔名,這裡我更改為main.c(一定要帶字尾)點選儲存按鈕,那麼在我們工程目錄下便會生成main.c檔案。
儲存路徑選擇

測試程式碼

雖然我們雖然新建並儲存了可編寫程式碼的檔案,但是我們的工程目錄下並沒有這個檔案,所以最後一步,我們需要將剛剛新建的檔案新增到工程中去。右鍵Source Group1選擇Add Existing Files to Group “Source Group1”,在工程目錄下選擇我們剛剛新建的main.c檔案。
新增檔案到工程中去
然後在雙擊main.c檔案在其中新增測試程式碼:

#include "stm32f10x.h"
int main(void){
    return 0;
}

編寫完成後,點選編譯可以看到Build Output可以看到0 Error,0 Warning表示編譯成功
這裡寫圖片描述

另外一種·做法:

5.搭建工程環境框架

a.開啟官方韌體庫包,定位到我們之前準備好的韌體庫包的目錄:
\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\STM32F4xx_StdPeriph_Driver 下面,將目錄下面的 src,inc 資料夾 copy 到我們剛才建立的 GECLIB資料夾下面。

b.開啟官方韌體庫包,定位到目錄:
\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm 下面,將檔案 startup_stm32f40_41xxx.s (啟動檔案)複製到 CORE 目錄下面。

c.然後定位到目錄:
\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Includ , 將 裡 面 的 四 個 頭 文 件 :core_cm4.h 、core_cm4_simd.h 、core_cmFunc.h 以及 core_cmInstr.h 同樣複製到 CORE 目錄下面。此時CORE的檔案應有
這裡寫圖片描述

d. 接下來我們要複製工程模板需要的一些其他標頭檔案和原始檔到我們工程。 首先定位到目錄:
STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Device\ST\STM32F4xx\Include 將裡面的 2 個頭檔案 stm32f4xx.h 和 system_stm32f4xx.h 複製到 USER 目錄之下。這兩個標頭檔案是STM32F4 工程非常關鍵的兩個標頭檔案。

e.然後進入目錄:
\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Project\STM32F4xx_StdPeriph_Templates ,將 目 錄 下 面 的 6個 文 件 main.c ,main.h, stm32f4xx_conf.h , stm32f4xx_it.c , stm32f4xx_it.h ,system_stm32f4xx.c 複製到 USER 目錄下面
4

完成以上步驟後,我們將需要的韌體庫相關檔案複製到了我們的工程目錄下面,下面我們需要把這些檔案加入我們的工程中去。點選這裡寫圖片描述進入Manage Project Items
這裡寫圖片描述

Project Targets一欄, 我們將Target名字修改為Template,然後在Groups一欄刪掉一個SourceGroup1,建立三個 Groups:USER,CORE,LIB。然後點選 OK,可以看到我們的 Target名字以及 Groups 情況如下圖:
7

接上一步,新增需要的檔案選擇 GECLIB,然後點選右邊的 Add Files,定位到我們剛才建立的目錄\LIB\src 下面,將裡面所有的檔案選中(Ctrl+A),然後點選 Add,然後 Close.可以看到 Files 列表下面包含我們新增的檔案。
8

提示兩點:
1.對於新增的檔案說明:例若只用到GPIO的配置,可以只選擇stm32f4xx_gpio.c這樣可以減少工程的程式碼量,提高編譯的速度。
2.有個檔案 stm32f4xx_fmc.c 比較特殊。這個檔案STM32F42 和 STM32F43 系列才用到,所以我們這裡要把它刪掉(是 注意是 stm32f4xx_fmc.c 要刪掉,不要刪掉 stm32f4xx_fsmc.c) 。

新增完成後,我們要在 MDK 裡面設定標頭檔案存放路徑。也就是告訴 MDK 到那些目錄下面去尋找包含了的標頭檔案。這一步驟非常重要。 如果沒有設定標頭檔案路徑,那麼工程會出現報錯標頭檔案路徑找不到。
1.進入設定介面:

9

2.這裡我們需要新增的標頭檔案路徑包括:\CORE, \USER\以及\LIB\inc(新增工程中所有含有.h檔案的路徑)。
10

3.STM32F40 系列的工程,還需要新增一個全域性巨集定義識別符號。新增方法是點選
魔術棒之後,進入 C/C++選項卡,然後在 Define 輸入框連輸入:STM32F40_41xxx,USE_STDPERIPH_DRIVER。注意這裡是兩個識別符號 STM32F40_41xxxUSE_STDPERIPH_DRIVER, 他們之間是用英文的逗號隔開的,請大家注意。
11

4.在做編譯工程之前我們首先要選擇編譯中間檔案編譯後存放目錄。方法是點選魔術棒 ,然後選擇“Output”選項下面的“Select folder for objects…”,接著選擇目錄為我們上面的 新建的 OBJ 目錄。,最後在OBJ目錄下就可看到我們需要的程式.hex檔案了。

5.編譯剛才新建的工程


這裡寫圖片描述

程式燒錄:

STM32燒錄程式目前筆者知道的有三種:JLink ,Ulink和串列埠燒錄,使用工具分別為:JLink,ULink以及USB轉TTL線。

ULink 燒錄程式

在安裝MDK過程中,會有提示是否安裝驅動,該驅動就為ULink驅動,如果選擇是就不需要再安裝驅動了,否則就需要自己手動下載驅動並安裝,驅動安裝完畢之後我們需要告訴我們的MDK我們使用的是什麼燒錄工具,右鍵Target目錄選擇Options for Target…..,在彈出的Options for target 選項卡中選擇Debug選項,在其右上方的下拉框中選擇ULink/ME Cortex Debugger 即是選擇了ULink進行程式燒錄。
這裡需要注意的是ULink接上電腦之後不一定能被安裝的MDK正確識別,我們點選下拉框右邊的Setting按鈕將會彈出Cortex-M Target Driver Setup介面,在該介面下,如果在JTAG Device Chain區域顯示No ULink Device Found 或者就是一片空白都表示我們的MDK沒有識別到你已經接到電腦上的ULink,此時就需要你查詢一下ULink端的原因了。

JLink 燒錄程式

JLink驅動並沒有整合在MDK安裝程式中所以一定需要我們手動下載Jlink驅動並安裝,驅動安裝完畢之後我們需要告訴我們的MDK我們使用的是什麼燒錄工具,右鍵Target目錄選擇Options for Target…..,在彈出的Options for target 選項卡中選擇Debug選項,在其右上方的下拉框中選擇JLink/J-TRACE Cortex 即是選擇了JLink進行程式燒錄。
同樣的,需要注意的是JLink接上電腦之後不一定能被安裝的MDK正確識別,我們點選下拉框右邊的Setting按鈕將會彈出Cortex JLink/JTrace Target Driver Setup介面,在該介面下,如果在JTAG Device Chain區域顯示Cannot redad JLink version number 或者就是一片空白都表示我們的MDK沒有識別到你已經接到電腦上的JLink,如果右邊J-Link / J-Trace Adaper下方的ort下拉框可選,選擇成為另外一個試試(原本JTAG選為SWD,原本SWD選為JTAG),如果可以識別就代表可以進行程式燒錄了。

串列埠燒錄程式

我們使用串列埠燒錄程式,使用USB轉TTL線,USB轉TTL驅動根據我們內部的轉換晶片安裝相應的驅動,常見的有一下幾種:CH340,PL2303,FTDI,CP210x等,驅動完成之後,右鍵Target目錄選擇Options for Target…..,在彈出的Options for target 選項卡中選擇Output選項,勾選上Create Hex File複選框,這樣我們在編譯程式碼時,便會在工程目錄下生成Hex檔案,我們串列埠燒錄程式其實就是使用外部工具將該Hex檔案中的內容,燒錄到STM32 FLASH中去。需要使用到的燒錄軟體可以使用JLink 官方提供的串列埠燒錄軟體,也可以使用 mcuisp USB一鍵下載工具也叫作FlyMcu進行燒錄。
使用FlyMCU時,首先需要指定軟體使用的串列埠號和波特率,在進行程式燒錄之前必須設定我們STM32的燒錄模式,需要將STM32 BOOT0設定為高電平,BOOT1設定為低電平,然後復位STM32,在FlyMcu中首先選擇好要下載的HEX檔案(編譯生成的HEX檔案在工程目錄下生成),然後選擇STMISP選項卡,點選開始程式設計按鈕,便可以進行程式燒錄了。

轉載於: https://blog.csdn.net/yuanquanzheng/article/details/52088791