-庫(kù)介紹:
各個(gè)芯片廠家在提高自家芯片性能的同時(shí)也在想方設(shè)法的降低自家芯片的開發(fā)難度。開發(fā)難度降低就會(huì)減少開發(fā)的時(shí)間和金錢成本,那樣芯片就會(huì)受到開發(fā)工程師和工廠的歡迎,自然賣的就多效益就好。ST公司針對(duì)STM32系列芯片發(fā)布了開發(fā)所用的庫(kù)。 STM32庫(kù)包含大量的函數(shù)接口,開發(fā)者在編寫程序時(shí)在庫(kù)的基礎(chǔ)上調(diào)用這些函數(shù)接口來(lái)配置STM32的寄存器,而不是開發(fā)者直接接觸底層寄存器,可以玩笑的說(shuō)初學(xué)者接觸寄存器相當(dāng)于自殺。庫(kù)是在寄存器和用戶驅(qū)動(dòng)層之間的代碼,向下處理與寄存器直接相關(guān)的配置,向上為用戶提供配置寄存器的接口。庫(kù)開發(fā)方式與直接配置寄存器方式的區(qū)分。 本文以STM32的3.5版本的庫(kù)為例,庫(kù)的原始文件可以從官網(wǎng)下載,也可從各個(gè)論壇和資料中獲得。 解壓后得到文件夾如下:STM32F10x_StdPeriph_Lib_V3.5.0 
--庫(kù)解釋:
點(diǎn)入文件夾后出現(xiàn)四個(gè)文件夾: 
_htmresc:包含兩張和ST公司相關(guān)的圖片,這個(gè)在編程時(shí)沒(méi)用,所以可以刪除。 Libraries:點(diǎn)入文件夾后發(fā)現(xiàn)兩個(gè)文件夾如下:CMSIS和STM32F10x_Stdperiph_Driver 
這里邊的文件都很重要,其中CMSIS的含義是:cortex microcontroller software interface standard即首字母縮寫成CMSIS標(biāo)準(zhǔn)。之前和大家介紹過(guò)STM32的內(nèi)核是由ARM公司設(shè)計(jì)的cortex_M3,而實(shí)際上使用此內(nèi)核的芯片不只是STM32,為了基于統(tǒng)一內(nèi)核的芯片能夠兼容(能夠兼容自然對(duì)ARM公司有利),所以ARM公司和芯片廠商建立了CMSIS標(biāo)準(zhǔn)。 在路徑STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/CMSIS下有兩個(gè)文件夾: 
這兩個(gè)文件夾內(nèi): CoreSupport包含對(duì)核相關(guān)的一些函數(shù)。 
而DeviceSupport包含對(duì)外設(shè)和中斷相關(guān)的一些函數(shù)。startup中包含啟動(dòng)文件。 
3.5的啟動(dòng)文件比較之前分的更詳細(xì)了,啟動(dòng)文件自然也就更多了。

尾綴英文縮寫不同,代表的含義為:
cl:互聯(lián)網(wǎng)型產(chǎn)品,目前包含此功能的系列芯片有STM32F105和F107系列。 vl:超值型產(chǎn)品,目前包含此功能的系列芯片有STM32F100系列。 xl:超高密度型產(chǎn)品。目前包含此功能的系列芯片有STM32F101系列和F103系列。 ld:低密度型,flash小于64K
md:中密度型,flash為64K或128K hd:高密度型,flash大于128K
庫(kù)并沒(méi)有介紹完,下面51黑會(huì)接著介紹。
庫(kù)是STM32系列芯片開發(fā)的基礎(chǔ)工具,就好比舞臺(tái)。8051內(nèi)核系列芯片呢,表演的節(jié)目比較簡(jiǎn)單,所以找個(gè)空地人群一圍觀就能表演,而STM32系列芯片呢,功能比較復(fù)雜,就像表演大型的歌舞,需要一個(gè)燈光音響效果較好的舞臺(tái)。STM32的庫(kù)正是這樣的舞臺(tái),但想在舞臺(tái)上自由表演前,自然也要對(duì)舞臺(tái)了解了解。
--庫(kù)解析: (接著STM32(6)--庫(kù)繼續(xù):)
Libraries:點(diǎn)入文件夾后發(fā)現(xiàn)兩個(gè)文件夾如下:CMSIS和STM32F10x_Stdperiph_Driver 
點(diǎn)入STM32F10x_Stdperiph_Driver文件夾,出現(xiàn)inc和src兩個(gè)文件夾。 
src是source的縮寫,是根源、本源的意思(英文縮寫喜歡省略掉中間的元音子母,有時(shí)不是很好理解原來(lái)的詞義。)。這里邊包含了大量的.文件,他們都是針對(duì)芯片外設(shè)(相對(duì)于CMSIS針對(duì)芯片的核來(lái)說(shuō))。而這些外設(shè)是芯片廠家自己設(shè)計(jì)時(shí)加入的,就是ST公司針對(duì)STM32每個(gè)外設(shè)而編寫的函數(shù)。 
大家可以發(fā)現(xiàn)這些.C文件的命名有很明顯的規(guī)律。那就是名字都是
stm32f10x_XXX.c而這XXX所替換的部分正對(duì)于著這個(gè)文件的功能。 比如說(shuō)stm32f10x_exti.c文件。exti替換了XXX,exti大家應(yīng)該熟悉吧,因?yàn)闃堑览锟偰芸匆姲l(fā)著綠光的標(biāo)示EXTI,就是出口的意思。在為控制器來(lái)說(shuō),這是中斷的含義。也就是說(shuō)這個(gè)stm32f10x_exti.c文件負(fù)責(zé)STM32芯片和中斷相關(guān)的事情,換句話說(shuō),也就是當(dāng)你用到了中斷時(shí),一定要把這個(gè)文件加到你的工程中。還有一個(gè)叫misc.c的文件,這里邊包含了外設(shè)對(duì)內(nèi)核的中斷向量控制器NVIC的訪問(wèn)函數(shù),在配置中斷時(shí),必須把這個(gè)文件添加到工程中。 inc是include的縮寫,里邊都是對(duì)應(yīng)著.C文件的.H頭文件。工程中用到的.C文件,就一定要把相應(yīng)的.H文件也添加進(jìn)去。 大家讀完上段可能對(duì)例子中的添加到工程里去這幾個(gè)字很不爽,因?yàn)槲以趺粗滥膫(gè)添加哪個(gè)不添加。其實(shí)有一個(gè)很簡(jiǎn)單的方法,把兩個(gè)文件夾內(nèi)的.C和.H文件全部都添加到工程里去進(jìn)去。具體怎么新建工程后邊會(huì)講。
project:點(diǎn)入文件夾包括STM32F10x_StdPeriph_Examples和STM32F10x_StdPeriph_Template兩個(gè)文件夾。 
可以看出兩個(gè)文件夾的不同在于一個(gè)是這Examples一個(gè)Template。Examples翻譯為例子,Template翻譯為模版。例子和模版意思好像差不太多,舉個(gè)例子大家體會(huì)一下,六級(jí)作文例文和六級(jí)作文模版。 STM32F10x_StdPeriph_Template文件夾里主要都是這對(duì)不同編程軟件的工程模版。 
程序員可以再次基礎(chǔ)上進(jìn)行修改和繼續(xù)編程,此文件夾外的幾個(gè).C和.H文件都是編程必須添加的文件,而且也是程序員需要改動(dòng)的文件。 STM32F10x_StdPeriph_Examples文件點(diǎn)入有很多文件夾: 
大家會(huì)發(fā)現(xiàn)這個(gè)文件夾的名字和我們上邊說(shuō)到的代表不同外設(shè)功能的XXX相對(duì)應(yīng)。這個(gè)文件夾正是ST公司針對(duì)外設(shè)的應(yīng)用舉例,每個(gè)外設(shè)的多種功能都有例舉,在后期自學(xué)過(guò)程很有參照意義。但這些例子不是工程形式,需要大家自己進(jìn)行配置,有的也需要進(jìn)行些修改。
以下是本系列教程文章列表:歡迎大家踴躍討論,有問(wèn)題可在51黑論壇回帖提出.
STM32教程(1)-大學(xué)里沒(méi)碰見像STM32一樣吸引我的姑娘:http://www.torrancerestoration.com/bbs/dpj-41167-1.html STM32教程(2)-各種應(yīng)用和外設(shè)簡(jiǎn)單介紹:http://www.torrancerestoration.com/bbs/dpj-41168-1.html STM32教程(3)-芯片引腳性質(zhì)介紹:http://www.torrancerestoration.com/bbs/dpj-41169-1.html STM32教程(4)-最小系統(tǒng)的設(shè)計(jì):http://www.torrancerestoration.com/bbs/dpj-41170-1.html STM32教程(5)-庫(kù):http://www.torrancerestoration.com/bbs/dpj-41171-1.html STM32教程(6)-STM32的流水燈程序:http://www.torrancerestoration.com/bbs/dpj-41162-1.html
STM32編程基礎(chǔ)(1)-Keil編程軟件的安裝:http://www.torrancerestoration.com/bbs/dpj-41163-1.html STM32編程基礎(chǔ)(2)-Keil庫(kù)的修改:http://www.torrancerestoration.com/bbs/dpj-41164-1.html STM32編程基礎(chǔ)(3)-Keil建立工程模版:http://www.torrancerestoration.com/bbs/dpj-41165-1.html STM32編程基礎(chǔ)(4)-Keil工程設(shè)置http://www.torrancerestoration.com/bbs/dpj-41166-1.html
|