<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32根據(jù)庫建立自己的工程

          STM32根據(jù)庫建立自己的工程

          作者: 時間:2016-11-27 來源:網(wǎng)絡(luò) 收藏
          利用STM32的官方庫在Keil uVision 4中新建一個工程的步驟:

          本文引用地址:http://www.ex-cimer.com/article/201611/322324.htm

          一.新建工程時的軟件操作,工程配置方法:

          1.點(diǎn)擊菜單欄的Project→NewuVision Project,新建一個工程文件,取名,設(shè)置好保存路徑后,點(diǎn)擊“保存”即可。

          2.接著彈出一個對話框,選擇芯片型號,我們用的是ST公司的STM 32F103VE,選擇該芯片,點(diǎn)擊“OK”即可。

          3.接著彈出的對話框,如下,問我們是否要拷貝STM 32的啟動代碼到工程文件中,這份啟動代碼在M 3系列中都是適用的,我們可以點(diǎn)擊“是”。但是,這里用ST的固件庫創(chuàng)建工程,庫里面也有啟動代碼文件,為了保持庫的完整性,我們就不需要開發(fā)環(huán)境自帶的啟動代碼了,稍后,我們手動添加,所以這里,我們點(diǎn)擊“否”。

          4.此時,已經(jīng)新建了一個工程,但是,里面還沒有我們所需的文件,接下來,就該添加所需文件了。在工程的根目錄(即,保存工程的文件夾下)新建以下3個文件夾,User,F(xiàn)Wlib,CMSIS。User用來存放工程文件和用戶代碼,包括主函數(shù)main.c。FWlib用來存放固件庫里面的inc和src這兩個文件夾以及它們里面的所有文件,這里面包含了芯片上的所有外設(shè)的驅(qū)動。CMSIS用來存放固件庫的啟動文件,和,M 3系列通用的文件。CMSIS里面的文件適合所有M 3內(nèi)核的單片機(jī)。CMSIS的縮寫為,Cortex Microcontroller Software Interface Standard,是ARM Cortex微控制器軟件接口標(biāo)準(zhǔn),是ARM公司為芯片廠商提供的一套通用的且獨(dú)立于芯片廠商的處理器軟件接口。

          5.把固件庫的Libraries STM32F10x_StdPeriph_Driver目錄下的inc和src這兩個文件夾復(fù)制到剛才新建的FWlib文件夾中。

          6.把固件庫的Project STM32F10x_StdPeriph_Template目錄下的main.c,stm32f10x_conf.h,stm32f10x_it.h,stm32f10x_it.c復(fù)制到User文件夾下。main.c也可以不復(fù)制,稍后,自己新建一個main.c文件在User文件夾下,也可以。stm32f10x_it.h,stm32f10x_it.c這兩個文件里面是中斷函數(shù),里面為空,用戶需要時,可以自己添加中斷服務(wù)程序。stm32f10x_conf.h是需要用戶配置的頭文件,當(dāng)我們需要用到芯片中某部分外設(shè)的驅(qū)動時,只需要在該文件中把相應(yīng)注釋標(biāo)記去掉,即可,這樣就可以把相應(yīng)頭文件包含進(jìn)來了。片上外設(shè)的驅(qū)動在Libraries STM32F10x_StdPeriph_Driver目錄下的src文件夾中,它們的頭文件在inc文件夾中。

          7.將固件庫的Libraries CMSIS Core CM3文件夾下的全部文件和文件夾復(fù)制到剛才新建的CMSIS文件夾中,Startup / arm目錄下一般有三個啟動文件,分別為,startup_stm32f10x_ld.s,startup_stm32f10x_md.s,startup_stm32f10x_hd.s,按順序是小,中,大容量Flash單片機(jī)的啟動文件。我們這里用的是STM32F103VE有512 K Flash,屬于大容量的。所以,稍后,把startup_stm32f10x_hd.s添加到我們的工程中。不同大小的Flash對應(yīng)的啟動文件不同,這點(diǎn)要注意。

          8.最后,可以把我們的工程文件,和,其它一些編譯產(chǎn)生的文件都放在User文件夾下,這樣,看起來比較整潔。

          9.回到Keil軟件的工程中,鼠標(biāo)右擊“Target”,在彈出的菜單中選擇“Add Group”選項(xiàng),新建4個分組。分別命名為,STARTCODE,USER,F(xiàn)Wlib,CMSIS。STARTCODE管理啟動代碼,USER管理用戶自定義的應(yīng)用程序,F(xiàn)Wlib管理庫文件,CMSIS管理M 3系列單片機(jī)通用的文件。

          10.下面,往這些新建的組里面添加文件。雙擊哪個組,就可以往哪個組里面添加文件。(往組里面添加文件,和剛才在工程保存目錄下面建立的文件夾沒有任何關(guān)系,它們是獨(dú)立的,互不影響。設(shè)置組,只是為了方便工程管理。)在STARTCODE里面添加Startup / arm目錄下的startup_stm32f10x_hd.s文件,

          在USER組里添加main.c,stm32f10x_it.c這兩個文件。在FWlib組里面添加src里面的全部驅(qū)動文件。當(dāng)然,src里面的驅(qū)動文件,也可以需要哪個就添加哪個,這里全部添加,是為了后續(xù)開發(fā)的方便。并且,我們可以通過配置stm32f10x_conf.h文件來選擇性添加,只有在stm32f10x_conf.h中被配置的文件才會被編譯。


          ●注意,在組里面添加的,都是匯編文件和C文件(即,以.s和.c為后綴的文件),即,都是源程序文件(可能還有其它類型的文件,但是,都必須是源程序文件),并且,一般地,所有源程序文件都必須添加到組里面才行。但是,頭文件是不需要添加到組里面的。

          ●注意:往組里面添加源程序文件很重要。如果,少添加一個源程序文件,編譯器就找不到該源程序文件了,很有可能編譯會出錯。

          11.接下來,需要對工程進(jìn)行一些設(shè)置。點(diǎn)擊工具欄中的魔術(shù)棒按鈕,在彈出的“Options for Target”窗口中,選擇“Target”選項(xiàng)卡,在“Xtal ( MHz )”處,可以設(shè)置外部時鐘頻率,即,外部晶振頻率。這個頻率是仿真時使用的頻率,如果要使用Keil uVision 4軟件仿真,就應(yīng)該把它設(shè)置成,和實(shí)際硬件的外接晶振頻率一樣。如果,不需要仿真,或者,仿真時,外部時鐘頻率因素不重要,也可以不修改,使用默認(rèn)值8 MHz。如下圖。

          12.點(diǎn)擊“Output”選項(xiàng)卡,點(diǎn)擊“Select Folder for Objects”按鈕,可以為編譯時產(chǎn)生的輸出文件,設(shè)置一個文件夾,把這些輸出文件都輸出到該文件夾下。還可以把“Creat HEX File”選項(xiàng)框勾上,這樣,就可以在編譯時,輸出16進(jìn)制的可執(zhí)行文件了。

          13.點(diǎn)擊“Listing”選項(xiàng)卡,點(diǎn)擊“Select Folder for Listings”按鈕,可以為編譯時產(chǎn)生的鏈接文件,設(shè)置一個文件夾,把這些鏈接文件都輸出到該文件夾下。

          14.點(diǎn)擊“C / C++”選項(xiàng)卡,這里有兩個設(shè)置很重要(“Define”和“Include Paths”,如下圖),設(shè)置不對,編譯會出很多錯誤。另外,下圖中的“One ELF Section per function”一般要選上。

          (1). Define是設(shè)置,預(yù)定義符號,在這里定義符號,相當(dāng)于在程序文件中使用#define語句定義符號。這里一般要填入以下內(nèi)容:USE_STDPERIPH_DRIVER, STM32F10X_HD, USE_STM3210E_EVAL其中,定義了USE_STDPERIPH_DRIVER就可以使用,標(biāo)準(zhǔn)外設(shè)驅(qū)動。定義了STM32F10X_HD,就可以對固件庫進(jìn)行條件編譯。定義了USE_STM3210E_EVAL,就可以使用ST公司的官方評估板作為硬件來下載,調(diào)試程序,這個宏,一般可以不定義,因?yàn)槲覀兒苌偈褂肧T公司的官方評估板。Define中要填的內(nèi)容,也可以從例子工程,或者,工程模板里面復(fù)制,粘貼到這里。

          ●注意:Define欄里面,填的內(nèi)容對STM32F10x系列的芯片是通用的,引腳數(shù)目不同也可以通用。

          ●注意:定義STM32F10X_HD,是因?yàn)槲覀冇玫男酒谴笕萘康?。添加了STM32F10X_HD這個宏以后,庫文件里面為大容量芯片定義的寄存器,我們都可以使用了。芯片是小容量,或者,中容量時,宏要換成,STM32F10X_LD或者STM32F10X_MD。其實(shí),不管什么容量,我們只要添加STM32F10X_HD這個宏即可。當(dāng)我們用小,或者,中容量的芯片時,那些為大容量定義的寄存器,不去訪問就是了,反正,也訪問不了。

          (2). Include Paths是設(shè)置,頭文件的搜索路徑的。我們的工程中,用到的頭文件在哪個路徑,就把該路徑添加進(jìn)來,即可。有時,也可以根據(jù)編譯錯誤,發(fā)現(xiàn)哪些頭文件,編譯器找不到,再把這些頭文件的路徑添加進(jìn)來。一般要填入的路徑有以下一些,每個不同的路徑以分號間隔:..;......LibrariesCMSISCM3CoreSupport;......LibrariesCMSISCM3DeviceSupportSTSTM32F10x;......LibrariesSTM32F10x_StdPeriph_Driverinc;“..”表示工程根目錄。

          ●在添加目錄時要注意,在下圖界面下,必須把藍(lán)色條移到最后的空白處,再點(diǎn)擊“OK”,最后一個路徑才能被添加成功,否則,最后一個路徑會丟失。

          ●注意:因?yàn)榫幾g器不會自動搜索指定目錄的子文件夾,所以每個路徑都要添加,就算,路徑1是路徑2的子目錄,路徑1和路徑2都必須同時添加,才行。

          15.點(diǎn)擊“Debug”選項(xiàng)卡,選中左邊的Use Simulator,就是使用軟件仿真模式調(diào)試,選中右邊的Use,就是使用硬件仿真,調(diào)試。由于我們多使用開發(fā)板加J-Link調(diào)試,所以選中“Cortex–M / RJ-LINK / J-Trace”項(xiàng),其它選項(xiàng),默認(rèn)即可。如下圖。

          在上圖的界面中,點(diǎn)擊“Settings”按鈕,進(jìn)行J-Link的一些接口進(jìn)行設(shè)置。“Max Clock”項(xiàng)一般設(shè)置成2MHz,如果設(shè)置太高,可能J-Link會不支持,這樣就會出錯。有時,如果硬件調(diào)試出錯了,把這里設(shè)置低一些,可能就會消除錯誤。其它設(shè)置,默認(rèn)即可。如下圖。

          16.點(diǎn)擊“Utilities”,選中“Use Target Driver for Flash Programming”,在它下面選擇“Cortex–M / RJ-LINK / J-Trace”項(xiàng)。其它設(shè)置,默認(rèn)即可。如下圖。


          上一頁 1 2 下一頁

          關(guān)鍵詞: STM32庫工

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();