日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STM32精英版(正点原子STM32F103ZET6开发板)学习篇1——新建库函数模版

發布時間:2023/12/10 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32精英版(正点原子STM32F103ZET6开发板)学习篇1——新建库函数模版 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

引入:

準備: STM32固件庫包。

??ST官方提供的STM32固件庫包:STM32F10x_StdPeriph_Lib_V3.5.0(文件夾名)
介紹:
??文件夾含有:Libraries、Project、Utilities等文件夾。
????Libraries文件夾含有:CMSISSTM32F10x_StdPeriph_Driver(包含固件庫核心的所有子文件夾和文件,建立工程時都會使用到)
??????CMSIS文件夾:為啟動文件。
????????|________ core_cm.c、core_cm.h【…\Libraries\CMSIS\CM3\CoreSupport】:?CMSIS核心文件,提供進入M3內核接口。
????????|________ STM32F10x文件夾【…\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x】:?啟動文件、比較基礎的寄存器定義和中斷向量定義的文件,含有:
??1、system_stm32f10x.c與system_stm32f10x.h的功能:設置系統以及總線時鐘,里面有SystemInit()函數,在系統啟動時都會調用,設置系統整個時鐘系統。
??2、stm32f10x.h:這個文件就相當重要,只要你做STM32開發,幾乎時刻都要查看這個文件相關的定義。這個文件打開可以看到,里面非常多的結構體以及宏定義。這個文件里面主要是系統寄存器定義申明以及包裝內存操作,對于這里是怎樣申明以及怎樣將內存操作封裝起來的。
??3、startup文件夾:啟動文件,里面包含8個啟動文件,根據不同容量的芯片,啟動文件是不同的。
????小容量:FLASH≤32K ??=== 》ld.s
????中容量:64K≤FLASH≤128K ??=== 》md.s
????大容量:256K≤FLASH??=== 》hd.s
??啟動文件是進行堆棧之類的初始化,中間向量表以及中斷函數定義。Reset_Handler中斷函數是唯一實現了的中斷處理函數,其他的中斷函數基本都是死循環。Reset_handler在我們系統啟動的時候會調用。啟動文件要引導進入main函數,同時在進入main函數之前,首先要調用SystemInit系統初始化。
??????STM32F10x_StdPeriph_Driver文件夾:為STM32固件庫源碼文件。
????????????|______________ inc:?存放的是stm32f10x_xxx.h頭文件。
????????????|______________ src:?存放的是stm32f10x_xxx.c格式固件庫源碼文件。
每一個.c文件和相應的.h文件對應,這里的文件也是固件庫的核心文件,每個外設對應一組文件

????Project文件夾含有:STM32F10x_StdPeriph_ExamplesSTM32F10x_StdPeriph_Template
??????STM32F10x_StdPeriph_Examples文件夾:ST官網提供的固件實例源碼,(可參考修改這個官方提供的實例來快速驅動自己的外設)
??????STM32F10x_StdPeriph_Template文件夾:工程模版。

????Utilities文件夾含有:官方評估板的一些對應源碼(可忽略)

????stm32f10x_stdperiph_lib_um文件:固件庫幫助文檔(英文版)

建立STM32F1工程模版

??步驟一

??電腦某目錄下創建文件夾:Tempalte——點入再創建子文件夾:USER

??步驟二

??打開MDK軟件(若之前有打開項目,點擊菜單選項卡“Project”——“Close Project””)——菜單選項卡“Project”——“New Uvision Project…”——定位到剛才建立的文件夾USER——點擊“保存”,如下圖:

??步驟三

??這時會跳出選擇芯片型號的界面,再此之前需要先添加(這邊不做介紹)
??選擇對應自己主板對應的芯片型號即可。

??點擊“OK”后跳出下面的界面(可添加自己需要的組件,方便構建開發環境)直接點擊“X”或者“Cancel”.

??步驟四

??這樣便創建了下圖所示的框架,還需要添加啟動代碼和.c文件。

??且若查看對應目錄下USER文件夾,會自動創建一些文件,如下圖所示:

??這邊對以上文件做些簡要說明:
????Tempalte.uvprojx文件(帶Keil圖標的文件): 是工程文件,非常關鍵。
????Listings、Objects文件夾: 用于存放編譯過程產生的中間文件。現在是空的,可刪除。【后面我們會把它們設置到新創建的文件夾OBJ中】

??步驟五

??在文件夾Tempalte下再創建3個文件夾:CORE、OBJ、STM32F10x_FWLib。
????CORE文件夾: 存放核心文件和啟動文件 。
????OBJ文件夾:存放編譯過程文件以及hex文件。
【之前說的USER文件夾下Listings、Objects文件夾后面會設置放在OBJ文件夾中】
????STM32F10x_FWLib文件夾:存放ST官方提供的庫函數源碼文件。
????USER文件夾(前面創建的文件):存放工程文件、main.c、system_stm32f10x.c等等。
??如下圖所示:

??步驟六

??復制固件庫文件夾中STM32F10x_StdPeriph_Driver文件夾下的incsrc的文件夾)【…\Libraries\STM32F10x_StdPeriph_Driver】到 STM32F10x_FWLib文件夾
???? inc文件夾存放的是:固件庫.c文件。
???? src文件夾存放的是:固件庫.h文件。
????(每個外設對應一個.c文件和一個.h文件

??步驟七

??復制固件庫文件夾中CoreSupport文件夾下的core_cm3.ccore_cm3.h文件)【…\Libraries\CMSIS\CM3\CoreSupport】到 CORE文件夾

??復制固件庫文件夾中arm文件夾下的startup_stm32f10x_hd.s文件{啟動文件})【…\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm】到 CORE文件夾

??步驟八

??復制固件庫文件夾中STM32F10x文件夾下的stm32f10x.h、system_stm32f10x.c、system_stm32f10x.h三個文件)【…\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x】到 USER文件夾

??復制固件庫文件夾中STM32F10x_StdPeriph_Template文件夾下的main.c、stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h四個文件)【…\Project\STM32F10x_StdPeriph_Template】到 USER文件夾

到這邊,我們就將固件庫中所需要的文件都復制好了。

??步驟九

??接下來,需要將剛剛復制的文件都加入到我們的工程中去。右擊Projectc窗口下的“Target1”——“Manage Project Item”。

將“Target1(雙擊)”修改為“Tempalte”,“Source Group1(雙擊)””修改為“USER”并在下面添加“CORE”、“FWLIB”,如下圖所示后。

再對不同的文件夾添加文件。
一、選中USER文件夾,點擊“Add Files…”,找到USER目錄下,添加三個文件:system_stm32f10x.c、stm32f10x_it.c、main.c

二、選中CORE文件夾,點擊“Add Files…”,找到CORE目錄下,添加兩個文件(注意文件類型要選擇All files才可以看到全部后綴文件)core_cm3.c、startup_stm32f10x_hd.s


三、選中FWLIB文件夾,點擊“Add Files…”,找到STM32F10x_FWLib目錄下src文件夾中,添加其所有文件(使用快捷鍵Ctrl+A全選)


這樣就將所有文件都添加到項目中。

??步驟十

??接下來會進行編譯,編譯過程會產生很多中間文件(垃圾文件 ),所以現在要先設置一下。
??選擇魔術棒(Options for Target…)——選項卡“Output”——勾選“Creat HEX File”.

??選擇魔術棒(Options for Target…)——選項卡“Output”——“Select Folder for Objects…”(默認是定位在我們剛剛說的Objects文件夾,前面說移動OBJ文件夾中)

再點擊“OK”,則表示路徑設置完成。

??步驟十一

??這時候,可以嘗試編譯一下,會發現編譯器會報錯,報錯頭文件路徑找不到。
??這種原因多半是兩原因:①頭文件根本不存在。②頭文件路徑沒包含到工程。
??那么,我們需要讓頭文件路徑包含到工程中:

??選擇魔術棒(Options for Target…)——選項卡“C/C++”——點擊“Include Paths”右側的按鈕“…”——在點擊“New”或者雙擊——點擊按鈕“…”選擇以下三個路徑(包含頭文件的路徑,且必須包含到最后一級)
????1、…\CORE
????2、…\USER
????3、…\STM32F10x_FWLib\inc
??這三個文件夾下都包含著頭文件 ,所以三個路徑一定要包含進去。

??步驟十二

??這時候,可以嘗試編譯一下,會發現編譯器會報錯,報錯有很多重復定義,這就是需要宏定義“ STM32F10X_HD,USE_STDPERIPH_DRIVER”。(千萬注意不要寫錯了=)
??選擇魔術棒(Options for Target…)——選項卡“C/C++”——“Preprocessor Symbols”下的“Define”旁的空格輸入:STM32F10X_HD,USE_STDPERIPH_DRIVER——點擊“OK”

??步驟十三

??現在再次編譯一遍,會發現還是有一個錯誤,那是因為main函數的問題,我們需要修改main函數就不會報錯了,大家可以選擇:選項卡下“Project”——“USER”——雙擊main.c——全選(Ctrl+A)+刪除后,粘貼以下程序:

#include "stm32f10x.h" /************************************************ALIENTEK 精英STM32F103開發板實驗0工程模板注意,這是手冊中的新建工程章節使用的main文件 技術支持:www.openedv.com淘寶店鋪:http://eboard.taobao.com 關注微信公眾平臺微信號:"正點原子",免費獲取STM32資料。廣州市星翼電子科技有限公司 作者:正點原子 @ALIENTEK ************************************************/void Delay(u32 count){u32 i=0;for(;i<count;i++);}int main(void){ GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE); //使能PB,PE端口時鐘GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5 端口配置GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽輸出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度為50MHzGPIO_Init(GPIOB, &GPIO_InitStructure); //初始化GPIOB.5GPIO_SetBits(GPIOB,GPIO_Pin_5); //PB.5 輸出高GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED1-->PE.5推挽輸出GPIO_Init(GPIOE, &GPIO_InitStructure); //初始化GPIOGPIO_SetBits(GPIOE,GPIO_Pin_5); //PE.5 輸出高 while(1){GPIO_ResetBits(GPIOB,GPIO_Pin_5);GPIO_SetBits(GPIOE,GPIO_Pin_5);Delay(3000000);GPIO_SetBits(GPIOB,GPIO_Pin_5);GPIO_ResetBits(GPIOE,GPIO_Pin_5);Delay(3000000); }}

工程創建完畢

總結

以上是生活随笔為你收集整理的STM32精英版(正点原子STM32F103ZET6开发板)学习篇1——新建库函数模版的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。