在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 如何使用STM32_V3.5版本固件庫(kù)建立工程模板

            如何使用STM32_V3.5版本固件庫(kù)建立工程模板

            作者: 時(shí)間:2016-11-17 來(lái)源:網(wǎng)絡(luò) 收藏

            準(zhǔn)備工作如下:

            本文引用地址:http://www.biyoush.com/article/201611/315428.htm

            1:下載STM32_V3.5的固件庫(kù)去論壇上找,很多

            2:準(zhǔn)備KeiluVision4軟件,并安裝到電腦上。

            3:不要帶板凳了,帶上你的腦袋就行,因?yàn)榘宓什粫?huì)思考。

            開(kāi)始:

            1:首先解壓縮下載的固件庫(kù)(保留一個(gè)備份,你懂的)

            里面有,

            _htmresc:ST的logo完全無(wú)用,不用理會(huì),

            Libraries:比較重要的文件包含STM32的系統(tǒng)文件和大量頭文件,也就是庫(kù)文件了。

            Project:包含大量外設(shè)的例程,和各個(gè)軟件版本的評(píng)估版工程模板。

            KEIL對(duì)應(yīng)的就是MDK-ARM文件下的工程模板。你也可以利用這個(gè)工程模板來(lái)修改,得到你自己的工程模塊,本文不用此法。

            Utilities:就是評(píng)估版的相關(guān)文件:本文也不會(huì)用到,無(wú)視既可。

            這四個(gè)文件,(先去掉文件的只讀屬性吧,相信你會(huì)的)

            2:安照一般的方法,建立工程模板先建立一些文件夾,比如工程模板要建在D盤(pán),下面的

            D:STM32PRO1(項(xiàng)目名字,自己隨便定)再該文件夾下面新建以下文件夾

            Libraries:直接復(fù)制上述的的Libraries文件夾,把其中的CMSIS剪切出來(lái),放到PRO1目錄下,直接成為另一個(gè)文件夾。另外把STM32F10x_StdPeriph_Driver下的inc和src文件夾剪切出來(lái),放在Libraries目錄下,STM32F10x_StdPeriph_Driver文件夾就可以刪除了。會(huì)發(fā)現(xiàn)里面就只剩下頭文件了。

            CMSIS:就是從上面粘貼來(lái)的。在CMSISCM3DeviceSupportSTSTM32F10x目錄下直接將Startup文件剪切出來(lái),放在Libraries目錄下,其他的不需要?jiǎng)印@锩娲娣诺木褪侵匾南到y(tǒng)文件,先不要理會(huì)是什么作用吧,慢慢就明白了。

            Startup就是從上面粘貼來(lái)的。我們要用的比如是:STM32F103VC,只要把startuparm目錄下的startup_stm32f10x_hd.s文件剪切出來(lái),放到Startup下面就好。Startup只要這個(gè)文件,其它全刪吧。這個(gè)就是啟動(dòng)文件,根據(jù)芯片存儲(chǔ)容量來(lái)選擇。

            USER:請(qǐng)?jiān)诶锩娣艂€(gè)main.c的文件,里面就一個(gè)WHILE(1)循環(huán)就好,但請(qǐng)加上這個(gè)頭文件:#i nclude"stm32f10x.h"。另外從固件庫(kù)的ProjectSTM32F10x_StdPeriph_Template目錄下復(fù)制stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h。這四個(gè)h文件是Libraries里面沒(méi)有的,理論上要自己寫(xiě)好的,但是固件庫(kù)里有就直接復(fù)制吧,呵呵。另外你還發(fā)現(xiàn)那個(gè)目錄下有個(gè)system_stm32f10x.c文件,有人問(wèn),這個(gè)怎么不一起復(fù)制了,很簡(jiǎn)單,因?yàn)镃MSIS這個(gè)文件夾里面已經(jīng)有了,個(gè)人認(rèn)為還是放在這里比較好,因?yàn)槭窍到y(tǒng)文件。

            Project:這個(gè)文件夾用來(lái)存放項(xiàng)目文件。比如你等下要建立的工程名字TEST.uvproj,就放在這里。在該文件下存放一些項(xiàng)目的輸出信息,OUTPUT,和LISTING信息,可以建立這兩個(gè)文件夾。等下就可以在OPTIONSFORTARGETPROJECT里面進(jìn)行路徑設(shè)置。

            文件夾分配到此結(jié)束,為什么要這么分配文件夾呢,其實(shí)是個(gè)人理解的問(wèn)題,我這樣的目的是為了比較清楚,也符合一般程序員的設(shè)置方法。等你了解了,隨便安排文件下都可以。

            下面開(kāi)始建立工程模板。

            3:打開(kāi)KEIL軟件,建立新工程。

            比如建TEST.uvproj,保存在剛才的Project文件夾下面。

            選擇你使用的STM32芯片,比如我用的是103VC的,就選擇那個(gè),確定后,會(huì)跳出來(lái)個(gè)窗口,問(wèn)你是否復(fù)制啟動(dòng)代碼,選擇否,因?yàn)槲覀円呀?jīng)弄好了,前面的準(zhǔn)備工作不是白做的。

            然后右鍵TARGET1,選擇ManageCcmponents,把文件給加進(jìn)去吧。

            來(lái)圖片了:加好文件后,出現(xiàn)如下的文件架構(gòu)。(按下圖加文件吧,每個(gè)文件都在相應(yīng)的文件夾里,前面的工作不是白做的。)圖看不到請(qǐng)看附件

            圖1

            接下來(lái)要設(shè)置編譯文件的路徑,設(shè)置好后如下圖:

            圖2

            現(xiàn)在編譯,還是有錯(cuò)誤的??梢韵染幾g下,

            因?yàn)閙ain.c中有#i nclude"stm32f10x.h"這句,在這個(gè)重要的頭文件里,并沒(méi)有定義好一些東西,分別在stm32f10x.h的0070行,取消對(duì)#defineSTM32F10X_HD的屏蔽,

            0105行取消對(duì)#defineUSE_STDPERIPH_DRIVER的屏蔽,這兩個(gè)定義好,才能正常工作,第一個(gè)是選擇存儲(chǔ)容量的型號(hào),每種芯片都不太一樣,所以讓你選擇,第二個(gè)是使用標(biāo)準(zhǔn)庫(kù)文件,因?yàn)槲覀兪且脦?kù)的,所以必須選擇,默認(rèn)是不用庫(kù)的,直接進(jìn)行寄存器的操作。

            像初學(xué)者是用庫(kù)比較好,所以肯定選擇的。

            也可以直接如下圖操作。

            圖3

            ,作用是一樣的。

            選擇好后,直接編譯,恭喜你,成功了。

            4:最后要說(shuō)明的就是:

            圖4

            這個(gè)庫(kù)文件,是必須選擇misc.c和stm32f10x_rcc.c的。

            另外就是你選擇用什么功能,就把什么功能的c文件加進(jìn)去,我這里已經(jīng)加了一個(gè)對(duì)IO口的應(yīng)用的一個(gè)c文件。

            5:一些重要文件的說(shuō)明吧

            core_cm3.c/core_cm3.h

            該文件是內(nèi)核訪問(wèn)層的源文件和頭文件,查看其中的代碼多半是使用匯編語(yǔ)言編寫(xiě)的。

            stm32f10x.h

            該文件是外設(shè)訪問(wèn)層的頭文件,該文件是最重要的頭文件之一。例如

            向量等等。除了這些該頭文件還定義了和外設(shè)寄存器相關(guān)的結(jié)構(gòu)體,如:

            typedefstruct

            {

            __IOuint32_tCRL;

            __IOuint32_tCRH;

            __IOuint32_tIDR;

            __IOuint32_tODR;

            __IOuint32_tBSRR;

            __IOuint32_tBRR;

            __IOuint32_tLCKR;

            }GPIO_TypeDef;

            包含了那么多寄存器的定義,那么在應(yīng)用文件中(例如自己編寫(xiě)的main源文件)只需要包含

            stm32f10x.h即可。

            在stm32f10x.h8296行

            #ifdefUSE_STDPERIPH_DRIVER

            #i nclude"stm32f10x_conf.h"

            #endif

            這里定義了#i nclude"stm32f10x_conf.h"

            system_stm32f10x.c/h

            該頭文件也可以稱(chēng)為外設(shè)訪問(wèn)層的頭文件和源文件。在該文件中可以定義系統(tǒng)的時(shí)鐘頻率,定義低速時(shí)鐘總線和高速時(shí)鐘總線的頻率,其中最關(guān)鍵的函數(shù)就是SystemInit()了,這個(gè)后面會(huì)詳細(xì)介紹??傊@兩個(gè)文件是新固件庫(kù)V3.5的重點(diǎn),有了它糧也大大簡(jiǎn)化了使用stm32的初始化工作。

            stm32f10x_conf.h

            這個(gè)文件和V2版本的庫(kù)的內(nèi)容是一樣的,需要使用哪些外設(shè)就取消哪些外設(shè)的注釋。

            stm32f10x_it.c/h

            這兩個(gè)文件包含了stm32中斷函數(shù),在源文件和頭文件中并沒(méi)有把所有的中斷入口函數(shù)都寫(xiě)出來(lái),而只寫(xiě)了ARM內(nèi)核的幾個(gè)異常中斷,其他的中斷函數(shù)需要用戶自己編寫(xiě)。stm32f10x_it.c的最后給了這樣一個(gè)模板。

            /******************************************************************************/

            /*STM32F10xPeripheralsInterruptHandlers*/

            /*AddheretheInterruptHandlerfortheusedperipheral(s)(PPP),forthe*/

            /*availableperipheralinterrupthandlersnamepleaserefertothestartup*/

            /*file(startup_stm32f10x_xx.s).*/

            /******************************************************************************/

            /**

            *@briefThishandlesPPPinterruptrequest.

            *@paramNone

            *@retvalNone

            */

            /*voidPPP_IRQHandler(void)

            {

            }*/

            從注釋中的英文提示可以看出,中斷向量的名稱(chēng)可以從相應(yīng)的啟動(dòng)代碼中找出,例如可以

            startup_stm32f10x_md.s中找到USART1中斷函數(shù)的名稱(chēng)——USART1_IRQHandler。其他的中斷函

            名可以以此類(lèi)推,一一獲得,在這里我就不一一復(fù)述了。

            Libraries文件夾

            該文件夾有包含兩個(gè)文件夾,一個(gè)是src文件夾,另一個(gè)是inc文件夾,顧名思義,一個(gè)里面放的是元件一個(gè)里面放的是頭文件。這兩個(gè)文件夾包含了所有的STM32的外設(shè)驅(qū)動(dòng)函數(shù),其實(shí)和V2版本也沒(méi)有太大的變化。簡(jiǎn)單來(lái)說(shuō),外設(shè)的驅(qū)動(dòng)相當(dāng)于windows的驅(qū)動(dòng)函數(shù)API,這些驅(qū)動(dòng)函數(shù)看到函數(shù)名基本就可以明白這個(gè)函數(shù)的作用,例如:GPIO_SetBits可以置位某個(gè)IO口,相反GPIO_ResetBits則可以復(fù)位某個(gè)IO口。我個(gè)人認(rèn)為熟練使用庫(kù)可以大大提高編程的效率,同時(shí)規(guī)范使用庫(kù)函數(shù)也可以提高程序的可讀性,讓團(tuán)隊(duì)中的其他程序員可以快速的明白代碼的作用。



            評(píng)論


            技術(shù)專(zhuān)區(qū)

            關(guān)閉