STM32開(kāi)源開(kāi)發(fā)環(huán)境的搭建
掃描二維碼
隨時(shí)隨地手機(jī)看文章
1.環(huán)境搭建1.1 Eclipse的下載與安裝
Eclipse是一個(gè)開(kāi)放源代碼的、基于Java的可擴(kuò)展開(kāi)發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過(guò)插件組件構(gòu)建開(kāi)發(fā)環(huán)境。由于eclipse只是一個(gè)IDE,因此需要借助其他插件以及軟件來(lái)搭建完整的開(kāi)發(fā)環(huán)境,也正是因?yàn)槿绱薳clipse具有很大的靈活性。
因此首先下載安裝eclipse,下載地址:
http://www.eclipse.org/downloads/
下載頁(yè)面如圖1.1所示。
圖1.1 eclipse下載界面
由于是針對(duì)C開(kāi)發(fā),所以下載Eclipse IDE for C/C++ Developers版本,這個(gè)版本已經(jīng)集成了CDT插件便于C語(yǔ)言的開(kāi)發(fā)。
1.2 JRE的下載與安裝下載的eclipse是一個(gè)綠色軟件,并不需要安裝,雙擊就可以直接運(yùn)行,但是由于eclipse是基于java開(kāi)發(fā),因此系統(tǒng)中必須安裝了JDK或者JRE,這里使用JRE,下載地址如下:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
如果覺(jué)得官網(wǎng)下載比較麻煩可以到這兒下載:
http://www.skycn.com/soft/27213.html
java的下載界面如圖1.2所示。
圖1.2 java下載界面
JDK是Java Development Kit是面向開(kāi)發(fā)人員使用的SDK,它提供了Java的開(kāi)發(fā)環(huán)境和運(yùn)行環(huán)境。JRE是Java Runtime Enviroment是指Java的運(yùn)行環(huán)境,是面向Java程序的使用者,而不是開(kāi)發(fā)者。因此我們只需要安裝JRE就可以。由于在運(yùn)行eclipse的時(shí)候必須要在后臺(tái)運(yùn)行java虛擬機(jī),因此對(duì)內(nèi)存和CPU占用較大,有時(shí)會(huì)比較卡。
1.3 GNU ARM Eclipse Plug-in的下載與安裝要搭建針對(duì)ARM的開(kāi)發(fā)環(huán)境還需要下載針對(duì)ARM開(kāi)發(fā)的插件,這樣才能夠新建針對(duì)ARM開(kāi)發(fā)的項(xiàng)目,這里使用GNU ARM Eclipse Plug-in,下載地址如下:
http://sourceforge.net/projects/gnuarmeclipse/
下載界面如圖1.3所示。
圖1.3 GNU ARM Eclipse Plug-in下載界面
安裝eclipse的安裝方式安裝插件之后再新建項(xiàng)目就可以看到ARM的項(xiàng)目了,如圖1.4所示。
圖1.4安裝插件之后的新建工程界面
1.4 Sourcery G++ Lite的下載與安裝前面只是安裝了一個(gè)工具,要完成ARM的開(kāi)發(fā)還需要安裝一個(gè)完整的軟件開(kāi)發(fā)環(huán)境,從GNU ARM Eclipse Plug-in這個(gè)插件的支持也可以看到如圖4所示,他所支持的有四種WinARM、Sourcery G++ Lite、Yagarto、devkitPro四種,其中前兩種較為有名,WinAVR在之前做AVR等單片機(jī)設(shè)計(jì)的時(shí)候已經(jīng)用的很多,也很方便,但是WINARM之前的很多版本并不支持STM32的cortex-M3內(nèi)核,雖然WinARM_20080331_testing版本支持但是在測(cè)試時(shí)遇到了麻煩,支持的并不是太好而且已經(jīng)停止了更新,因此放棄此種方案。Sourcery G++是一個(gè)基于GNU工具鏈的完整的軟件開(kāi)發(fā)環(huán)境,目前仍在更新,通過(guò)比較選擇Sourcery G++作為開(kāi)發(fā)環(huán)境,Sourcery G++本身是付費(fèi)的但是Sourcery G++ Lite版本是免費(fèi)的,我們采用免費(fèi)版本。下載地址如下:
http://www.codesourcery.com/sgpp/lite/arm/portal/subscription?@template=lite
下載界面如圖1.5所示。
圖1.5軟件下載界面
通過(guò)下載界面可以可以知道Sourcery G++ Lite有4中版本,其中EABI是針對(duì)底層也就是不包含任何系統(tǒng)的開(kāi)發(fā)的,我們就使用這個(gè)版本。Sourcery G++ Lite是采用安裝包的方式,相對(duì)于以前用的Cygwin等在安裝上很方便,只需點(diǎn)擊下一步就可以,安裝之后Eclipse能夠自己找到,無(wú)需再手動(dòng)加入環(huán)境變量。
這樣一個(gè)基本的開(kāi)發(fā)環(huán)境便搭建完成,針對(duì)STM32我們使用了ST公司的官方固件庫(kù),這樣可以減少對(duì)底層硬件的關(guān)心,縮短開(kāi)發(fā)周期,同時(shí)有利于程序的穩(wěn)定性和規(guī)范性,因此我們?cè)诖罱ǖ拈_(kāi)發(fā)環(huán)境中對(duì)固件庫(kù)進(jìn)行編譯,ST的固件庫(kù)有很多版本,各版本之間有的差異也比較大,我們采用的是3.1版本,相對(duì)比較新,ST公司也不斷有新的版本發(fā)布,下載地址:
http://www.st.com/stonline/products/support/micro/files
包含了固件庫(kù)之后的開(kāi)發(fā)界面如圖1.6所示。
圖1.6完整的開(kāi)發(fā)環(huán)境界面
2.工程配置2.1新建工程使用配置好的開(kāi)發(fā)環(huán)境新建一個(gè)工程,如圖2.1所示。
圖2.1新建工程界面
新建一個(gè)工程,點(diǎn)擊Finish之后會(huì)進(jìn)入工程界面,如果環(huán)境配置正確,工程中會(huì)自動(dòng)包含相關(guān)的文件,如圖2.2所示。包含的文件應(yīng)該為Sourcery G++ Lite的安裝目錄。
圖2.2新建工程之后的包含文件
接下來(lái)是準(zhǔn)備相關(guān)的文件,為了更好的進(jìn)行STM32開(kāi)發(fā),我使用ST提供的固件庫(kù),可以從網(wǎng)上下載,我現(xiàn)在用的是最新版本3.4,其他版本可能類(lèi)似。
固件庫(kù)的文件名為STM32F10x_StdPeriph_Lib_V3.4.0,首先把STM32F10x_StdPeriph_Lib_V3.4.0Libraries文件夾拷貝到剛剛建立的工程文件目錄下。這是編譯時(shí)候需要調(diào)用的固件庫(kù)。
2.2鏈接與啟動(dòng)文件接下來(lái)需要找出Linker所需的ld文件,由于在固件庫(kù)中ST提供了一些編譯器的工程模板,因此可以使用模板中的配置文件。TrueSTUDIO文件夾下存在幾個(gè)文件夾。TrueSTUDIO是ST官方的編譯器,也是GCC的,因此使用它模板中的配置文件。打開(kāi)STM32F10x_StdPeriph_Lib_V3.4.0ProjectSTM32F10x_StdPeriph_TemplateTrueSTUDIO可以看到在在目錄下有幾個(gè)文件夾,因?yàn)槲矣玫氖荢TM32F103ZET6因此我選擇STM3210E-EVAL文件下的stm32_flash.ld,通過(guò)記事本打開(kāi)查看,部分內(nèi)容摘錄如下:
**File: stm32_flash.ld
**Abstract: Linker script for STM32F103ZE Device with
**512KByte FLASH, 64KByte RAM
**Set heap size, stack size and stack location according
**to application requirements.
**Set memory bank area and size if external memory is used.
猜測(cè)應(yīng)該是我要找的,復(fù)制文件到工程根目錄下。
接下來(lái)要找到工程的啟動(dòng)文件,和linker文件一樣,打開(kāi)目錄如下:
workspaceGCCTESTLibrariesCMSISCM3DeviceSupportSTSTM32F10xstartupTrueSTUDIO
里面同樣有很多文件,因?yàn)槲矣玫氖荢TM32F103ZET6所以我選擇startup_stm32f10x_hd.S這個(gè)文件,猜測(cè)對(duì)應(yīng)的就是STM32的大容量,這一點(diǎn)應(yīng)該是一致的,注意要把擴(kuò)展名改為大S,拷到startup目錄下,把其他多余的都刪掉。
2.3其他文件在工程根目錄下新建一個(gè)User的文件夾,拷貝一個(gè)例程到文件中,固件庫(kù)中給了很多例程,我拷貝STM32F10x_StdPeriph_Lib_V3.4.0ProjectSTM32F10x_StdPeriph_ExamplesGPIOIOToggle這個(gè)例程,將IOToggle下面的所有文件拷貝到User文件夾下。這樣所有的文件就準(zhǔn)備好了。
2.4配置工程回到eclipse的界面,按F5鍵,可刷新當(dāng)前的工作目錄,這樣剛剛添加的文件就會(huì)在項(xiàng)目窗口顯示出來(lái),如圖2.3所示。
圖2.3文件添加完畢之后的項(xiàng)目窗口
這個(gè)時(shí)候如果直接去編譯肯定出錯(cuò),因此我們需要對(duì)工程進(jìn)行設(shè)置,接下來(lái)設(shè)置工程,右鍵點(diǎn)擊工程,選擇“properties”菜單。點(diǎn)擊C/C++ Build-Settings設(shè)置界面如圖2.4所示
圖2.4設(shè)置界面
點(diǎn)擊Target Processor選擇All configurations處理器選擇cortex-m3,如圖2.5所示。
圖2.5處理器選擇
如圖2.6所示,添加兩條編譯預(yù)定義STM32F10X_HD,USE_STDPERIPH_DRIVER。STM32F10X_HD和前面的鏈接與啟動(dòng)文件對(duì)應(yīng),表示是大容量期間(我猜測(cè)的)。USE_STDPERIPH_DRIVER表示使用固件。
圖2.6添加編譯預(yù)定義
接下來(lái)添加文件包含路徑,為了防止工程找不到對(duì)應(yīng)的頭文件需要把相應(yīng)的路徑添加進(jìn)去,和上面添加的方法類(lèi)似,點(diǎn)擊添加按鈕,在路徑上選擇workspace,依次將工程目錄下有頭文件的文件夾都給包含進(jìn)去。如圖2.7所示。
圖2.7添加文件包含路徑
接下來(lái)添加鏈接文件,如圖2.8所示,添加前面準(zhǔn)備好的鏈接文件。
圖2.8添加鏈接文件