本文將創建一個基於Nucleo開發板和KEIL5.14的工程模版,由一下幾個部分組成:函數
一、工程模版的創建
二、STlink的設置與永遠的流水燈
一、工程模版的創建
1)在創建工程以前,首先創建一個存放模版文件的文件夾,咱們把它叫作template。而後在創建6個子文件夾:Doc,Libraries,Listing,Output,Project,USER,在Libraries裏創建CMSIS和FWlib文件夾,在CMSIS中創建startup,這些文件夾的名字能夠任意取的,這樣命名只是爲了方便識別。對於這些文件夾用來存放什麼文件,後面將會有說明。新建好的目錄結構以下圖1.1所示。
圖1.1
文件目錄結構
2)接下來打開KEIL,點擊KEIL的菜單;Project->New Project,而後將目錄定位到剛剛創建的Project文件夾下。同時工程名取爲template點擊保存,咱們的工程文件就放在Project文件夾下面。操做過程以下圖1.2所示
圖1.2
工程創建
3)接下來會出現一個選擇Device的界面,就是要咱們選擇具體的CPU芯片型號,針對咱們的板子,咱們選擇STM32F411RE,該過程必定要選擇正確。
圖1.3
芯片型號選擇
點擊OK,MDK會彈出
Manage Run-Time Environment
對話框,如圖1.4所示。這是MDK5的新功能,在這個界面咱們能夠添加本身須要的組件,從而方便構建開發環境,這裏咱們很少作介紹。因此在圖1.4中咱們直接點擊cancel。
圖1.4
Manage Run-Time Environment界面
4)
下面咱們將要把官方的固件庫包裏的源代碼複製到咱們的工程目錄文件夾下面。找到STM32F4xx_DSP_StdPeriph_Lib\Libraries\STM32F4xx_StdPeriph_Driver,將其目錄下的src,inc文件夾copy到咱們剛纔創建的FWlib文件夾下面,src存放的是固件庫的.c文件,inc存放的是對應的.h文件,如圖1.5所示。
1.5
官方庫源碼文件夾
5)下面咱們將固件庫包裏與啓動相關的代碼複製到咱們的工程目錄CORE之下。
打開官方固件包,定位到目錄..\STM32F4xx_DSP_StdPeriph_Lib\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm下,將startup_stm32f411xe.s複製到CMSIS文件夾下的startup文件夾下,而後定位到目錄STM32F4xx_DSP_StdPeriph_Lib\Libraries\CMSIS\Include中,將其中的core_cm4.h、core_cmFunc.h、core_cmInstr.h、core_cmSimd.h複製到CMSIS文件夾下面
1.6
CMSIS文件夾下文件
6)
接下來複制工程模板須要的一些其餘頭文件和源文件到工程。首先定位到目錄:
STM32F4xx_DSP_StdPeriph_Lib\Libraries\CMSIS\Device\ST\STM32F4xx\Include將裏面的兩個頭文件stm32f4xx.h、system_stm32f4xx.h
複製到CMSIS文件夾之下。再進入
STM32F4xx_DSP_StdPeriph_Lib\Project\STM32F4xx_StdPeriph_Templates
,將其中的
main.c、stm32f4xx_conf.h、stm32f4xx_it.c、stm32f4xx_it.h、system_stm32f4xx.c複製到USER文件夾下。
7)
通過前面6個步驟咱們將固件庫的相關內容複製到了工程目錄中,如今將他們添加到工程中。打開工程,右鍵單擊Target1,選擇Manage Compoments,在Project Targets一欄,咱們將Target1名字修改成template,Groups一欄刪掉Source Group1,創建5個Groups:
Doc、CMSIS、FWlib、USER、startup,如圖1.7所示
圖1.7
新建Groups
8)向Groups添加文件定位到咱們以前創建的那些文件夾中,對於寫代碼來講咱們通常只須要用到其中某些外設,就只添加那些外設就能夠了這裏創建模版因此所有添加,便於之後修改。另外stm32f4xx_fsmc.c、s
tm32f4xx_cec.c
tm32f4xx_fmc.c、s
tm32f4xx_fmpi2c.c、s
tm32f4xx_qspi.c
s
tm32f4xx_spdifrx.c
須要刪除掉,不然會編譯出錯,如圖1.8
圖1.8
不刪除庫致使編譯出錯
。
圖1.9
添加文件到FWlib
9)
接下來要設置頭文件存放路徑,就是告訴MDK到哪裏去尋找頭文件,若是不設置就會出現錯誤。具體操做如圖1.十、圖1.11所示。
圖1.10
設置頭文件路徑
圖1.11 設置頭文件路徑
這裏咱們要添加的頭文件路徑爲\Libraries\FWlib\inc、\USER、\Libraries\CMSIS,注意是
\Libraries\FWlib\inc,而不是
\Libraries\FWlib\src,千萬不要弄錯。
10)接下來還要在咱們要編譯工程,在編譯以前咱們首先要選擇編譯中間文件編譯後存放目錄。方法是;點擊魔術棒,而後選擇「Output」下面的「Select folders of objects...
」而後選擇爲咱們新建的Output,而且將create hex file勾選上。同時將"Listing"
下面的「Select folders of objects...
」選擇爲咱們新建的Listing。如圖1。12所示。
圖1.12
編譯輸出文件夾的選擇
11)在編譯以前將main.c替換爲一下內容
-
1 #include"stm32f4xx.h"
2 voidDelay(__IO uint32_t nCount);
3 voidDelay(__IO uint32_t nCount)
4 {
5 while(nCount--);
6 }
7 int main(void)
8 {
9 GPIO_InitTypeDef GPIO_InitStructure;
10 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
11 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
12 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
13 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
14 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
15 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
16 GPIO_Init(GPIOA,&GPIO_InitStructure);
17 while(1)
18 {
19 GPIO_SetBits(GPIOA,GPIO_Pin_5);
20 Delay(0x7FFFFF);
21 GPIO_ResetBits(GPIOA,GPIO_Pin_5);
22 Delay(0x7FFFFF);
23 }
24 }
與此同時,咱們要講USER分組下面的stm43f4xx_it.c文件內容清空,或者刪除掉其中的32行的#include "main.h"和144行的Systick_Handler函數內容。緊接着編譯會看看是否有錯誤,最後編譯成功。至此模版創建成功
二、ST-Link的設置與永遠的流水燈
1)點擊魔術棒,選擇Debug,在下拉菜單中選中ST-LINK debugger,而且在setting菜單中設置ort爲SWD,速度選擇4MHZ而後再點擊Flash Download,將Program、Verify和Reset and Run選中,具體操做如圖2.一、圖2.二、圖2.3
圖2.1
ST-link的設置
圖2.2
ST-LINK debug的設置
圖2.3
Flash Download的設置
2)完成後就能夠單擊下載按鈕,能夠看到板子的燈在閃爍,就不一一上圖了。
附上具體代碼