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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

STM32F103构建固件库模板(PS固件库文件树介绍)

發(fā)布時(shí)間:2023/12/10 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32F103构建固件库模板(PS固件库文件树介绍) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

參考:STM32F103ZE新建固件庫(kù)模板
作者:追兮兮
發(fā)布時(shí)間:2020-10-14 10:31:45
網(wǎng)址:https://blog.csdn.net/weixin_44234294/article/details/109065495
參考博文:https://blog.csdn.net/visual_eagle/article/details/104126122

目錄

  • 固件庫(kù)的使用
    • 創(chuàng)建固件庫(kù)文件夾
    • 固件庫(kù)官方源文件拷貝到相應(yīng)文件夾
      • Libiraries(FWLIB)
      • CORE
      • USER
    • 新建工程
    • 將固件庫(kù)文件導(dǎo)入到工程
      • 工程下創(chuàng)建文件夾
      • 文件夾內(nèi)添加文件
      • 生成.hex文件
      • 添加頭文件路徑
  • STM32固件庫(kù)文件樹結(jié)構(gòu)簡(jiǎn)介
    • Libraries 文件夾
    • Project 文件夾
    • 固件庫(kù)的幫助文檔
  • STM32固件庫(kù)內(nèi)部結(jié)構(gòu)功能簡(jiǎn)介
    • 1. 匯編編寫的啟動(dòng)文件
    • 2. 時(shí)鐘配置文件
    • 3. 外設(shè)相關(guān)的
    • 4. 內(nèi)核相關(guān)的
    • 5. 頭文件的配置文件
    • 6. 專門存放中斷服務(wù)函數(shù)的c文件

固件庫(kù)的使用

固件庫(kù)就是函數(shù)的集合,固件庫(kù)函數(shù)的作用是向下負(fù)責(zé)與寄存器直接打交道, 向上提供用戶函數(shù)調(diào)用的接口(API)。在 51的開(kāi)發(fā)中我們常常的作法是直接操作寄存器,而對(duì)于 STM32 這種級(jí)別的 MCU,數(shù)百個(gè)寄存器記起來(lái)又是談何容易。于是 ST(意法 半導(dǎo)體)推出了官方固件庫(kù),固件庫(kù)將這些寄存器底層操作都封裝起來(lái),提供一整套接口(API) 供開(kāi)發(fā)者調(diào)用,大多數(shù)場(chǎng)合下,你不需要去知道操作的是哪個(gè)寄存器,你只需要知道調(diào)用哪些函數(shù)即可。

以本博的學(xué)習(xí)板STM32F103ZET6為例,固件庫(kù)(庫(kù)函數(shù)的集合)是由官方提供的,這個(gè)官方是ST公司,而不是正點(diǎn)原子官方。也就是說(shuō)不僅僅這一型號(hào)單片機(jī),ST系列其他型號(hào)的單片機(jī)庫(kù)函數(shù)依舊可以適用。所以不必?fù)?dān)心更換板子后不知如何去編程。

任何處理器,不管它有多么的高級(jí),歸根結(jié)底都是要對(duì)處理器的寄存器進(jìn)行操作。但是固件庫(kù)不是萬(wàn)能的,如果想要把 STM32 學(xué)透,光讀 STM32 固件庫(kù)是遠(yuǎn)遠(yuǎn)不夠的,你還是要了 解一下 STM32 的原理。

創(chuàng)建固件庫(kù)文件夾

新建一個(gè)文件夾Template(自己隨意起),該目錄下四個(gè)文件夾如圖(名字也可以自己起)

  • Core:一些核心文件和啟動(dòng)文件(或者分開(kāi)為:CMSIS和STARTUP)
  • Libiraries(FWLIB):固件庫(kù)(外設(shè)驅(qū)動(dòng))
  • Project:工程文件,keil創(chuàng)建的工程保存在此
  • User:main函數(shù),應(yīng)用程序
  • Doc:創(chuàng)建readme.txt工程項(xiàng)目描述文件
  • 將生成的.hex文件存在于OBJ目錄下

不同人習(xí)慣不同,放置的位置會(huì)有一些區(qū)別,不過(guò)無(wú)傷大雅。


固件庫(kù)官方源文件拷貝到相應(yīng)文件夾

Libiraries(FWLIB)

STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver目錄下有inc(頭文件)和src(.c文件)兩個(gè)文件copy到Template文件夾下的Libiraries內(nèi),里面都是外設(shè)的一些驅(qū)動(dòng),如下所示。




CORE

STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport目錄下兩個(gè)文件copy到之前新建的文件Template下的CORE文件下。



\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm目錄下還要copy一個(gè)啟動(dòng)文件到CORE。
(>128kFLASH大容量的用hd,中等的用md,<64kFLASH小的用ld)戰(zhàn)艦板子就用hd



Core目錄完成,內(nèi)部顯示如下:


USER

\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x目錄下copy三個(gè)文件到USER文件。


\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template目錄下復(fù)制以下四個(gè)文件到USER。


新建工程

打開(kāi)MDK5新建工程

目錄選擇之前新建的template下的User,文件名字自己取

選擇芯片型號(hào),我這里是STM32F103ZE。

江江視頻里此處選的STM32F103C8



項(xiàng)目新建后的目錄

此時(shí)點(diǎn)擊之前新建的文件Template下的USER后:(會(huì)出現(xiàn)以下文件,點(diǎn)開(kāi)前兩個(gè)都是空文件)

將固件庫(kù)文件導(dǎo)入到工程

工程下創(chuàng)建文件夾

此時(shí)固件庫(kù)內(nèi)容的復(fù)制已經(jīng)完成,現(xiàn)在就要在MDK5中將文件導(dǎo)入到工程。在工程下創(chuàng)建文件夾。

江江視頻里的方法:
工程下創(chuàng)建文件夾:右鍵選擇Add Group,挨個(gè)添加,鼠標(biāo)長(zhǎng)按進(jìn)行修改名字。
向文件夾內(nèi)添加文件:直接在主界面雙擊文件夾,彈出添加界面進(jìn)行文件的添加。

右鍵選擇Manage Project items…創(chuàng)建三個(gè)文件夾(Keil
主界面魔術(shù)棒右邊是這個(gè)快捷鍵)。




文件夾內(nèi)添加文件

FWLIB:Add Files… \LibLIbiiraries\src(全部文件)


USER:Add Files… \USER(3個(gè).c文件)

COREc:Add Files… \CORE(.c文件+.s文件)

生成.hex文件

點(diǎn)擊魔術(shù)棒將生成的.hex文件存在于Project(大部分人之前這個(gè)文件夾都取名為OBJ)


添加頭文件路徑

此時(shí)編譯會(huì)出現(xiàn)找不到頭文件的error。

需添加頭文件路徑,編譯時(shí)自動(dòng)就把頭文件包含進(jìn)來(lái)。

發(fā)現(xiàn)編譯再次出錯(cuò)

原因:實(shí)際上User目錄下的這個(gè).h文件是沒(méi)有被導(dǎo)入進(jìn)去的


上面這句話說(shuō)明只有定義了USE_STDPERIPH_DRIVER才會(huì)包含這個(gè)頭文件,所以需要添加宏定義到Define,點(diǎn)擊ok。

再次編譯就不報(bào)錯(cuò)了

STM32固件庫(kù)文件樹結(jié)構(gòu)簡(jiǎn)介

STM32固件庫(kù)文件樹及構(gòu)成詳解(庫(kù)版本:STM32F10x_StdPeriph_Lib_V3.5.0)

庫(kù)減壓后所有文件夾構(gòu)成如下:






Libraries 文件夾

有 CMSIS 和 STM32F10x_StdPeriph_Driver 兩個(gè)目錄,這兩個(gè)目錄包含 固 件 庫(kù) 核 心 的 所 有 子 文 件 夾 和 文 件 。 其 中 CMSIS 目 錄 下 面 是 啟 動(dòng) 文 件 ,STM32F10x_StdPeriph_Driver 放的是 STM32 固件庫(kù)源碼文件。源文件目錄下面的 inc 目錄存放的是 stm32f10x_xxx.h 頭文件,無(wú)需改動(dòng)。src 目錄下面放的是 stm32f10x_xxx.c 格式的固件庫(kù)源碼文件。每一個(gè).c 文件和一個(gè)相應(yīng)的.h 文件對(duì)應(yīng)。這里的文件也是固件庫(kù)的核心文件,每個(gè)外設(shè)對(duì)應(yīng)的一組文件。

Project 文件夾

有兩個(gè)文件夾,顧名思義, STM32F10x_StdPeriph_Examples 文件夾下面存放的的 ST 官方提供的固件實(shí)例源碼,在以后的開(kāi)發(fā)過(guò)程中,可以參考修改這個(gè)官方提供的實(shí)例來(lái)快速驅(qū)動(dòng)自己的外設(shè),很多開(kāi)發(fā)板的實(shí)例都參考了官方提供的例程源碼,這些源碼對(duì)以后的學(xué)習(xí)非常重STM32F10x_StdPeriph_Template 文件夾下面存放的是工程模板。Utilities 文件下就是官方評(píng)估板的一些對(duì)應(yīng)源碼。

固件庫(kù)的幫助文檔

根目錄中還有一個(gè) stm32f10x_stdperiph_lib_um.chm 文件,直接打開(kāi)可以知道,這個(gè)文檔學(xué)習(xí)過(guò)程中非常有用

STM32固件庫(kù)內(nèi)部結(jié)構(gòu)功能簡(jiǎn)介

這里可參照視頻學(xué)習(xí):【150集-野火F103霸道/指南者視頻教程】
P16 初識(shí)STM32固件庫(kù)—我們認(rèn)為固件庫(kù)應(yīng)該是什么樣子的

1. 匯編編寫的啟動(dòng)文件

startup_ stm32f10x_ hd.s:設(shè)置堆棧指針、設(shè)置PC指針、初始化中斷向量表、配置系統(tǒng)時(shí)鐘、對(duì)用c庫(kù)函數(shù)_ main最終去到c的世界
  • 1

2. 時(shí)鐘配置文件

system_ stm32f10x.c: 把外部時(shí)鐘HSE=8M, 經(jīng)過(guò)PLL倍頻為72M。
  • 1

3. 外設(shè)相關(guān)的

stm32f10x.h: 實(shí)現(xiàn)了內(nèi)核之外的外設(shè)的寄存器映射 XXX: GPIO、 USRAT、 I2C、 SPI、 FSMC stm32f10x_ xx.c: 外設(shè)的驅(qū)動(dòng)函數(shù)庫(kù)文件 stm32f10x__xx.h:存放外設(shè)的初始化結(jié)構(gòu)體,外設(shè)初始化結(jié)構(gòu)體成員的參數(shù)列表,外設(shè)固件庫(kù)函數(shù)的聲明
  • 1
  • 2
  • 3
  • 4

4. 內(nèi)核相關(guān)的

CMSIS - Cortex 微控制器軟件接口標(biāo)準(zhǔn) core_cm3.h:實(shí)現(xiàn)了內(nèi)核里面外設(shè)的寄存器映射 core_ _cm3.c . NVIC(嵌套向量中斷控制器)、sysTick(系統(tǒng)滴答定時(shí)器) misc.h misc.c
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

5. 頭文件的配置文件

stm32f10x_ _conf.h: 頭文件的頭文件 / /stm32f10x_ _usart.h / /stm32f10x_ _i2c.h / /stm32f10x_ spi.h / /stm32f10x_ adc.h / /stm32f10x_ fsmc.h
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

6. 專門存放中斷服務(wù)函數(shù)的c文件

stm32f10x_ it.c stm32f10x_ it.h 中斷服務(wù)函數(shù)你可以隨意放在其他的地方,并不是一定要放在stm32f10x_it.c
  • 1
  • 2
  • 3
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的STM32F103构建固件库模板(PS固件库文件树介绍)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。