tft每日頭條

 > 科技

 > stm32怎麼搭建系統

stm32怎麼搭建系統

科技 更新时间:2025-01-15 10:02:59

3.1 STM32官方固件庫簡介

ST(意法半導體)為了方便用戶開發程序,提供了一套豐富的STM32固件庫。固件庫就是一個固件函數包,它由程序、數據結構和宏組成,包括了微控制器所有外設的性能特征。該函數庫還包括每一個外設的驅動描述和應用實例,為開發者訪問底層硬件提供了一個中間API,通過使用固件函數庫,無需深入掌握底層硬件細節,開發者就可以輕松應用每一個外設。因此,使用固态函數庫可以大大減少用戶的程序編寫時間,進而降低開發成本。每個外設驅動都由一組函數組成,這組函數覆蓋了該外設所有功能。每個器件的開發都由一個通用API (application programming interface 應用編程界面)驅動,API對該驅動程序的結構,函數和參數名稱都進行了标準化。

簡單地說,使用标準外設庫進行開發最大的優勢就在于可以使開發者不用深入了解底層硬件細節就可以靈活規範地使用每一個外設。标準外設庫覆蓋了從GPIO到定時器,再到CAN、I2C、SPI、UART和ADC等等的所有标準外設。對應的C源代碼隻使用了最基本的C編程的知識,所有代碼經過嚴格測試,易于理解和使用,并且配有完整的文檔,非常方便進行二次開發和應用。

3.2 STM32F10x_StdPeriph_Lib_V3.5.0介紹

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)1

圖1 STM32F10x_StdPeriph_Lib_V3.5.0文件夾

Libraries 文件夾下面有CMSIS和STM32F;

其中CMSIS目錄下面是啟動文件。ARM公司為了能讓不同的芯片公司生産的Cortex-M3芯片能在軟件上基本兼容,和芯片生産商共同提出了一套标準CMSIS(Cortex Microcontroller Software Interface Standard),翻譯過來是“ARM Cortex™微控制器軟件接口标準”。ST官方庫就是根據這套标準設計的。

STM32F10x_StdPeriph_Driver放的是STM32固件庫源碼文件。源文件目錄下面的inc目錄存放的是stm32f10x_xxx.h頭文件,無需改動。src目錄下面放的是stm32f10x_xxx.c格式的固件庫源碼文件。每一個.c文件和一個相應的.h文件對應。這裡的文件也是固件庫的核心文件,每個外設對應一組文件。

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)2

圖2 STM32F10x_StdPeriph_Lib_V3.5.0文件夾

Libraries文件夾裡面的文件在我們建立工程的時候都會使用到。

Project文件夾下面有兩個文件夾。STM32F10x_StdPeriph_Examples文件夾下面存放的ST官方提供的固件實例源碼,在以後的開發過程中,可以參考修改這個官方提供的實例來快速驅動自己的外設,很多開發闆的實例都參考了官方提供的例程源碼,這些源碼對以後的學習非常重要。STM32F10x_StdPeriph_Template文件夾下面存放的是工程模闆。

Utilities文件下就是官方評估闆的一些對應源碼,這個可以忽略不看。

根目錄中還有一個stm32f10x_stdperiph_lib_um.chm文件,直接打開可以知道,這是

一個固件庫的幫助文檔,這個文檔非常有用,隻可惜是英文的,在開發過程中,這個文檔會經常被使用到。

3.3 模闆創建

創建STM32F103C8T6模闆共需要完成8個步驟。

步驟一:該步完成三個任務①在合适的位置創建Template文件夾,如圖3所示。②在Template文件夾下創建CORE、HARDWARE、OBJ、STM32F10x_FWLib、USER等5個文件夾,如圖4所示。③複制開發工具——建模闆資料——SYSTEM文件夾複制到Template文件夾下,如圖5。此時Template文件夾下共有6個子文件夾:CORE、HARDWARE、OBJ、STM32F10x_FWLib、SYSTEM、USER,如圖6。

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)3

圖3 創建Template文件夾

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)4

圖4 創建5個文件夾

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)5

圖5 複制SYSTEM文件夾

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)6

圖6 Template文件夾下的6個文件

文件夾的含義:

CORE:用來存放核心文件和啟動文件;

HARDWARE:存放和硬件相關的文件;

OBJ:是用來存放編譯過程文件以及hex文件;

STM32F10x_FWLib:用來存放ST官方提供的庫函數源碼文件。

SYSTEM:存放了三個經常用到的自定義函數:delay,sys,usart。

USER:用來存放工程文件,主函數文件 main.c,以及其他包括 system_stm32f10x.c等等。

步驟二:在USER文件夾中創建項目并處理。

打開keil軟件,選擇Project –>New Uvision Project,如圖7所示。引出對話框,在對話框的文件名處填入文件名Template,點擊保存,如圖8所示。

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)7

圖7 選擇新建項目菜單

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)8

圖8 創建項目并起名

點保存後,引出對話框Select Device for Target’ Target1’,在該對話框找到STMicroelectronics項(如圖9),打開,一直找到

STMicroelectronics→STM32F1Series→STM32F103→STM32F103C8,

選擇,如圖10所示。

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)9

圖9 找到STMicroelectronics項

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)10

圖10 選擇STM32F103C8

在圖10選好之後點擊OK,引出對話框圖11,選擇cancel。

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)11

圖11 Manage Run-Time Environment 界面

取消之後可以看到在系統界面中已經建好了一個模闆框架,如圖12所示。

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)12

圖12 模闆框架

這時回到USER文件夾,可以看到在USER下有兩個文件夾和兩個文件,如圖13所示。

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)13

圖13 USER下的文件和文件夾

Template.uvprojx是工程文件,非常關鍵,不能輕易删除。Listings和Objects文件夾是MDK自動生成的文件夾,用于存放編譯過程産生的中間文件。這裡,我們将把編譯的中間文件存入在OBJ文件夾中,所以Listings和Objects文件夾就可以删除了。

最後,我們從STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\

ST\STM32F10x下面将裡面的三個文件stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h,複制到USER目錄之下。然後将STM32F10x_StdPeriph_Lib_V3.5.0\

Project\STM32F10x_StdPeriph_Template 下面的4個文件main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h複制到USER目錄下面。複制完的結果如圖14所示。

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)14

圖14 USER下的文件和文件夾

這樣USER文件夾就處理好了。

步驟三:處理STM32F10x_FWLib文件夾。

打開官方固件庫包,定位到我們之前準備好的固件庫包的目錄

STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver下面,将目錄下面的src,inc文件夾複制STM32F10x_FWLib文件夾下面,如圖15所示。src存放的是固件庫的.c文件,inc存放的是對應的.h文件。

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)15

圖15 STM32F10x_FWLib下的文件

步驟四:處理CORE文件夾。

下面将固件庫包裡面相關的啟動文件複制到我們的工程目錄CORE之下。打開官方固件庫包,定位到目錄STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport下面,将文件core_cm3.c和文件 core_cm3.h複制到CORE下面去。然後定位到目錄

STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm下面,将裡面startup_stm32f10x_md.s文件複制到CORE下面。不同容量的芯片使用不同的啟動文件,STM32F103C8T6是中容量芯片,所以選擇startup_stm32f10x_md.s文件,結果如圖16所示。

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)16

圖16 CORE下的文件

步驟五:向工程添加組件。

右鍵點擊 Target1,選擇Manage Project items選擇,如圖17所示。

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)17

圖17 Manage Project items項

引出Manage Project items對話框,如圖Project Targets一欄,将Target名字修改為Template,然後在Groups一欄删掉Source Group1,建立5個Groups:CORE,HARDWARE,FWLIB,SYSTEM,USER,如圖18所示。然後點擊OK,可以看到我們的Target名字以及Groups情況,如圖19。

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)18

圖18 添加組

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)19

圖19 項目組情況

步驟六:向工程組添加文件。

①.向CORE中添加:還回到剛才的Manage Project items對話框,選擇CORE,然後點擊右邊的Add Files,定位到core_cm3.c,startup_stm32f10x_md.s(注意,默認添加的時候文件類型為.c,也就是添加startup_stm32f10x_md.s啟動文件的時候,你需要選擇文件類型為All files才能看得到這個文件),然後點擊Add,然後Close,可以看到Files列表下面包含我們添加的文件。如圖20—圖22所示。

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)20

圖20 為CORE添加文件

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)21

圖21 為CORE添加文件

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)22

圖22 為CORE添加文件

②.向HARDWARE中添加,這部分在需要時再添加。

③.向FWLIB中添加:選擇FWLIB,然後點擊右邊的Add Files,定位到STM32F10x_FWLib/src下面,将裡面所有的文件選中(Ctrl A),然後點擊Add,然後Close,可以看到Files 列表下面包含我們添加的文件,如圖23—圖24所示。

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)23

圖23 為FWLIB添加文件

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)24

圖24 為FWLIB添加文件

④.向SYSTEM中添加:進入到SYSTEM的下一級文件夾,再各自進入一級文件夾,可以找到3個.c文件,加入組内,如圖25所示。

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)25

圖25 為SYSTEM添加文件

⑤.向USER中添加:USER目錄下面需要添加的文件為 main.c,stm32f10x_it.c,

system_stm32f10x.c。

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)26

圖26 為USER添加文件

添加文件後,項目變成為圖27情況。

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)27

圖27 項目組情況

步驟七:設置項目。

在編譯程序之前,還需要對項目進行設置,單擊圖28上的圖标,引出圖29對話框。

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)28

圖28 項目設置

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)29

圖29 Output設置

在打開的對話框中,選擇output頁面,在該頁面中單擊Select Folder for Objects引出圖30對話框,選擇OBJ文件夾,編譯的中間文件和hex程序存放在這裡。同時在該頁面還需要勾選Create HEX File,如圖31。

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)30

圖30 選擇編譯存放文件夾

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)31

圖31 完成編譯其他選項

設置完輸出方式後,再來設置頭文件目錄。還是圖31的界面,切換到C/C 頁,如圖32所示。

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)32

圖32 設置頭文件

在C/C 頁面中,在Define項後輸入STM32F10X_MD,USE_STDPERIPH_DRIVER,在Include Paths後單擊圖示按鈕,引出對話框圖33所示,選擇如圖文件夾,單擊OK即可。

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)33

圖33 設置頭文件

步驟八:下載驗證。

在USER下選擇文件main.c(如圖34),在文件中輸入如下代碼:

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)34

圖34 選擇main.c

#include "stm32f10x.h"

void Delay(u32 count)

{

u32 i=0;

for(;i<count;i );

}

int main(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOC, &GPIO_InitStructure);

GPIO_SetBits(GPIOC,GPIO_Pin_13);

while(1)

{

GPIO_ResetBits(GPIOC,GPIO_Pin_13);

Delay(3000000);

GPIO_SetBits(GPIOC,GPIO_Pin_13);

Delay(3000000);

}

}

輸入後進行保存,然後單擊工具欄上的編譯按鈕,如圖35所示。如果結果如圖36所示,則模闆搭建成功。

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)35

圖35 編譯按鈕

stm32怎麼搭建系統(零基礎學習STM32智能家居系統之利用MDK5)36

圖36 模闆搭建成功

以上是利用MD5進行STM32 開發模闆搭建的介紹,歡迎共同讨論,糾錯。期待點贊、轉發。粉絲朋友可直接私信索要相關資料(包括模闆及源代碼)。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved