国产精品久久久久影院,成人午夜福利视频,国产精品久久久久高潮,国产精品 欧美 亚洲 制服,国产精品白浆无码流出

《嵌入式-STM32開發(fā)指南》第一部分 入門篇 - 第7章 STM32固件庫(kù)與STM32Cube產(chǎn)品介紹

發(fā)布者:溫暖陽(yáng)光最新更新時(shí)間:2024-12-17 來(lái)源: elecfans關(guān)鍵字:STM32  固件庫(kù)  STM32Cube 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

自STM32標(biāo)準(zhǔn)庫(kù)出道以來(lái),備受廣大工程師和公司的喜愛,但是,從2013年開始,ST逐漸停止了對(duì)標(biāo)準(zhǔn)外設(shè)庫(kù)的更新和維護(hù)。目前,ST全力推崇HAL庫(kù),STM32Cube就是與HAL庫(kù)配合使用圖形化編程官方IDE。


7.1 STM32庫(kù)簡(jiǎn)介

到目前為止,ST有標(biāo)準(zhǔn)外設(shè)庫(kù)(SPL 庫(kù))、HAL 庫(kù)、LL 庫(kù) 三種。前兩者都是常用的庫(kù),后面的 LL 庫(kù)是 ST 最近才添加,隨 HAL 源碼包一起提供,目前支持的芯片也偏少。各庫(kù)如下所示:

圖1 標(biāo)準(zhǔn)庫(kù)、HAL 庫(kù)、LL 庫(kù)對(duì)比.png

其中,SPL 庫(kù) 和 HAL 庫(kù)兩者相互獨(dú)立,互不兼容。幾種庫(kù)的比較如下:

圖2各個(gè)庫(kù)對(duì)比.png

目前幾種庫(kù)對(duì)不同芯片的支持情況如下:

圖3.png

ST 中文官網(wǎng)上有一篇《STM32庫(kù)函數(shù)性能對(duì)比》的文章,其中對(duì)比了各種庫(kù)的性能如下:

圖4 ST各庫(kù)性能對(duì)比.png

7.1.1標(biāo)準(zhǔn)外設(shè)庫(kù)簡(jiǎn)介

標(biāo)準(zhǔn)外設(shè)庫(kù)(Standard Peripherals Library)是對(duì) STM32 芯片的一個(gè)完整的封裝,包括所有標(biāo)準(zhǔn)器件外設(shè)的器件驅(qū)動(dòng)器。這應(yīng)該是目前使用最多的 ST 庫(kù)。幾乎全部使用 C 語(yǔ)言實(shí)現(xiàn)。但是,標(biāo)準(zhǔn)外設(shè)庫(kù)也是針對(duì)某一系列芯片而言的,沒有可移植性。STM32F1系列的版本停留在3.5.0,這個(gè)版本也許是大家最熟悉的版本。

圖5標(biāo)準(zhǔn)外設(shè)庫(kù)支持程度.png

標(biāo)準(zhǔn)外設(shè)庫(kù)仍然接近于寄存器操作,主要就是將一些基本的寄存器操作封裝成了 C 函數(shù)。開發(fā)者需要關(guān)注所使用的外設(shè)是在哪個(gè)總線之上,具體寄存器的配置等底層信息。雖然標(biāo)準(zhǔn)外設(shè)庫(kù)對(duì)各外設(shè)的進(jìn)行了一次封裝,而不是僅僅局限在對(duì)寄存器的封裝。實(shí)現(xiàn)了各外設(shè)的基本操作接口。

標(biāo)準(zhǔn)外設(shè)庫(kù)的文件基本架構(gòu)并不復(fù)雜。下圖顯示了 STM32F10xx 標(biāo)準(zhǔn)外設(shè)庫(kù)文件的基本架構(gòu)

圖6.png

ST 為各系列提供的標(biāo)準(zhǔn)外設(shè)庫(kù)稍微有些區(qū)別。例如,STM32F1x 的庫(kù)和 STM32F3x 的庫(kù)在文件結(jié)構(gòu)上就有些不同,此外,在內(nèi)部的實(shí)現(xiàn)上也稍微有些區(qū)別,這個(gè)在具體使用(移植)時(shí),需要注意一下!但是,不同系列之間的差別并不是很大,而且在設(shè)計(jì)上是相同的。STM32 的標(biāo)準(zhǔn)外設(shè)庫(kù)涵蓋以下 3 個(gè)抽象級(jí)別:

?  包含位,位域和寄存器在內(nèi)的完整的寄存器地址映射
?   涵蓋所有外圍功能(具有公共API的驅(qū)動(dòng)器)的例程和數(shù)據(jù)結(jié)構(gòu)的集合。
?   一組包含所有可用外設(shè)的示例,其中包含最常用的開發(fā)工具的模板項(xiàng)目。

7.1.2 HAL庫(kù)簡(jiǎn)介

HAL是Hardware Abstraction Layer的縮寫,中文名:硬件抽象層。HAL庫(kù)是ST為STM32最新推出的抽象層嵌入式軟件。可以說(shuō)HAL庫(kù)就是用來(lái)取代之前的標(biāo)準(zhǔn)外設(shè)庫(kù)的。相比標(biāo)準(zhǔn)外設(shè)庫(kù),STM32Cube HAL庫(kù)表現(xiàn)出更高的抽象整合水平,HAL API集中關(guān)注各外設(shè)的公共函數(shù)功能,這樣便于定義一套通用的用戶友好的API函數(shù)接口,從而可以輕松實(shí)現(xiàn)從一個(gè)STM32產(chǎn)品移植到另一個(gè)不同的STM32系列產(chǎn)品。HAL庫(kù)是ST未來(lái)主推的庫(kù),從前年開始ST新出的芯片已經(jīng)沒有STD庫(kù)了,比如F7系列。目前,HAL庫(kù)已經(jīng)支持STM32全線產(chǎn)品。

HAL 庫(kù)是基于一個(gè)非限制性的 BSD 許可協(xié)議(Berkeley Software Distribution)而發(fā)布的開源代碼。 ST 制作的中間件堆棧(USB 主機(jī)和設(shè)備庫(kù),STemWin)帶有允許輕松重用的許可模式, 只要是在 ST 公司的 MCU 芯片上使用,庫(kù)中的中間件(USB 主機(jī)/設(shè)備庫(kù),STemWin)協(xié)議棧即被允許隨便修改,并可以反復(fù)使用。至于基于其它著名的開源解決方案商的中間件(FreeRTOS,F(xiàn)atFs,LwIP和PolarSSL)也都具有友好的用戶許可條款。

圖7 HAL庫(kù)支持的中間件.png

目前,結(jié)合HAL庫(kù),ST對(duì)其產(chǎn)品線構(gòu)建的軟件架構(gòu)如下圖所示。

圖8 HAL庫(kù)軟件架構(gòu).png

7.1.3 LL庫(kù)簡(jiǎn)介

LL庫(kù)(Low Layer)是 ST 最近新增的庫(kù),與 HAL 庫(kù)捆綁發(fā)布,文檔也是和 HAL 庫(kù)文檔在一起的,比如:在STM32F3x 的 HAL 庫(kù)說(shuō)明文檔中,ST 新增了LL庫(kù)這一章節(jié),但是在 F2x 的HAL文檔中就沒有。

LL 庫(kù)更接近硬件層,對(duì)需要復(fù)雜上層協(xié)議棧的外設(shè)不適用,直接操作寄存器。其支持所有外設(shè)。使用方法:

?  獨(dú)立使用,該庫(kù)完全獨(dú)立實(shí)現(xiàn),可以完全拋開 HAL 庫(kù),只用LL庫(kù)編程完成。在使用STM32CubeMX生成項(xiàng)目時(shí),直接選LL庫(kù)即可。如果使用了復(fù)雜的外設(shè),例如 USB,則會(huì)調(diào)用 HAL 庫(kù)
?   混合使用,和 HAL 庫(kù)結(jié)合使用。

目前,CubeMX 在生成項(xiàng)目時(shí),可以選擇采用 LL 庫(kù)。
LL 庫(kù)文件的命名方式和 HAL 庫(kù)基本相同。個(gè)人感覺,LL 庫(kù)就是原來(lái)的標(biāo)準(zhǔn)外設(shè)庫(kù)移植到 Cube下的新的實(shí)現(xiàn),但是其實(shí)現(xiàn)方法更加高效、簡(jiǎn)潔。使用 LL 庫(kù)編程和使用標(biāo)準(zhǔn)外設(shè)庫(kù)的方式基本一樣,但是確會(huì)得到比標(biāo)準(zhǔn)外設(shè)庫(kù)更高的效率。

7.2 STM32Cube簡(jiǎn)介

ST 為新的標(biāo)準(zhǔn)庫(kù)注冊(cè)了一個(gè)新商標(biāo):STMCube?。并且,ST專門為其開發(fā)了配套的桌面軟件 STMCubeMX,開發(fā)者可以直接使用該軟件進(jìn)行可視化配置,大大節(jié)省開發(fā)時(shí)間。

圖9.jpg

這其中就包含了 HAL 庫(kù)和最近新增的 LL 庫(kù)。如下圖:

圖10.png

從上圖不難看出,LL 庫(kù)和 HAL 庫(kù)兩者相互獨(dú)立,只不過(guò) LL 庫(kù)更底層。而且,部分 HAL 庫(kù)會(huì)調(diào)用LL庫(kù)(例如:USB驅(qū)動(dòng))。同樣,LL 庫(kù)也會(huì)調(diào)用 HAL 庫(kù)。

用戶可以使用 STMCubeMX 直接生成對(duì)應(yīng)芯片的整個(gè)項(xiàng)目(目前主流開發(fā)工具的項(xiàng)目基本全支持),STMCubeMX 負(fù)責(zé)給整理各種需要的源碼文件。如下所所示。

圖11 STM32Cube生成代碼過(guò)程.png


好了,關(guān)于STM32固件庫(kù)與STM32Cube產(chǎn)品介紹就到這里吧,在虎紋,筆者將帶領(lǐng)大家學(xué)習(xí)如何安裝與使用STM32Cube。


關(guān)鍵字:STM32  固件庫(kù)  STM32Cube 引用地址:《嵌入式-STM32開發(fā)指南》第一部分 入門篇 - 第7章 STM32固件庫(kù)與STM32Cube產(chǎn)品介紹

上一篇:STM32CUBEMX F103 HAL庫(kù)開發(fā)之 USB虛擬串口
下一篇:《嵌入式-STM32開發(fā)指南》第一部分 入門篇 - 第5章 STM32新建工程及配置

推薦閱讀最新更新時(shí)間:2025-06-23 09:00

STM32基于固件庫(kù)學(xué)習(xí)筆記(9)TM3產(chǎn)生PWM調(diào)LED亮度
PWM   脈沖寬度調(diào)制模式可以產(chǎn)生一個(gè)由TIMx_ARR寄存器確定頻率、由TIMx_CCRx寄存器確定占空比的信號(hào),也就是說(shuō)對(duì)脈沖寬度的控制。   STM32 的定時(shí)器除了 TIM6 和 7。其他的定時(shí)器都可以用來(lái)產(chǎn)生 PWM 輸出。其中高級(jí)定時(shí)器 TIM1 和 TIM8 可以同時(shí)產(chǎn)生多達(dá) 7 路的 PWM 輸出。而通用定時(shí)器也能同時(shí)產(chǎn)生多達(dá) 4路的 PWM 輸出,這樣,STM32 最多可以同時(shí)產(chǎn)生 30 路 PWM 輸出!    在TIMx_CCMRx寄存器中的OCxM位寫入’110’(PWM模式1)或’111’(PWM模式2),能夠獨(dú)立地設(shè)置每個(gè)OCx輸出通道產(chǎn)生一路PWM。必須設(shè)置TIMx_CCMRx寄存OCxPE
[單片機(jī)]
STM32固件庫(kù)V3.5 在Keil MDK環(huán)境下使用方法
簡(jiǎn)介 寫這篇教程主要是和大家分享使用STM32的基本方法,也是給自己學(xué)習(xí)過(guò)程的總結(jié)、記錄和備忘,避免重復(fù)學(xué)習(xí)之前明白但又忘記的知識(shí)和操作。我現(xiàn)在也是剛開始接觸學(xué)習(xí)STM32,我是在STM32的固件庫(kù)V3基礎(chǔ)上進(jìn)行學(xué)習(xí)。在這里我和大家分享一下使用V3.x庫(kù)的方法,希望大家喜歡,如有錯(cuò)誤請(qǐng)指出。 這篇教程分以下幾個(gè)方面,一:建立工程,設(shè)置工程屬性。二:建立條理清晰的GROUP;三:使用JLINK仿真調(diào)試。下面就分別逐個(gè)說(shuō)明。 一、新建MDK工程 1、首先,打開MDK軟件,再點(diǎn)擊Project- New uVision Project…,如下圖所示: 彈出如下對(duì)話框: 新建一個(gè)文件夾MDK工程,然后把工程名字
[單片機(jī)]
<font color='red'>STM32</font><font color='red'>固件庫(kù)</font>V3.5 在Keil MDK環(huán)境下使用方法
《嵌入式-STM32開發(fā)指南》第一部分 入門篇 - 第3章 搭建開發(fā)環(huán)境
3.1簡(jiǎn)介 STM常用的集成開發(fā)環(huán)境(IDE)有KEIL和IAR。 表1 IDE相應(yīng)工具 圖1 IDE編譯過(guò)程 3.2 KEIL安裝 3.2.1概述 Keil MDK(Microcontroller Developer Kit微控制器開發(fā)工具)-ARM是美國(guó)Keil軟件公司(現(xiàn)已被ARM公司收購(gòu))出品的支持ARM微控制器的一款I(lǐng)DE(集成開發(fā)環(huán)境)。 MDK-ARM包含了工業(yè)標(biāo)準(zhǔn)的Keil C編譯器、宏匯編器、調(diào)試器、實(shí)時(shí)內(nèi)核等組件。具有業(yè)行領(lǐng)先的ARM C/C++編譯工具鏈,完美支持Cortex-M、Cortex-R4、ARM7和ARM9系列器件,包含世界上品牌的芯片。比如:ST、Atmel、Freescale、NXP、
[單片機(jī)]
STM32自制GUI小游戲--Apple的學(xué)習(xí)筆記
一,前言 要過(guò)年了,我就玩會(huì)吧~GUI之前學(xué)習(xí)過(guò)了guilite源碼,那么我就調(diào)用它的API自己做個(gè)小游戲玩玩。步驟是先在vs上完成調(diào)試,然后移植到stm32F4開發(fā)板上。主要也想多用用新買的并口LCD屏,因?yàn)橹暗膇li9325并口8bit連camera不能用DMA,我又買了個(gè)ili9431并口16bit屏幕(連接camera方便DMA直接采集賦值),因?yàn)?bit的話,16bit需要先傳高bit再傳低bit給LCD。而camera DMA是4個(gè)字節(jié)按低地址到高地址寫到LCD,這樣就導(dǎo)致8bit LCD無(wú)法通過(guò)DMA連接camera了。跑題了,我順便述說(shuō)我的新屏幕,哈哈~先看下游戲效果圖吧!其實(shí)可以理解為一個(gè)超級(jí)瑪麗小游戲。
[單片機(jī)]
STM32新建匯編工程2
上一篇文章里寫了新建工程的過(guò)程中,使用了keil提供的文件,也可以不使用,自己手動(dòng)拷貝,這樣工程會(huì)更簡(jiǎn)單一些,只需要拷貝啟動(dòng)文件一個(gè)即可,如下界面里不做選擇 新建工程的時(shí)候不選軟件部件 然后直接新建工程,新建完工程后,再去之前的工程中,只將startup_stm32f10x_hd.s文件拷貝過(guò)來(lái),放置到新建的工程目錄下,然后在界面中加入已經(jīng)存在的文件,然后新建一個(gè)main.s文件,將上篇文章中的代碼拷貝過(guò)來(lái),如下圖 由于沒有系統(tǒng)時(shí)鐘配置部分的c代碼,需要修改啟動(dòng)代碼中調(diào)用了系統(tǒng)時(shí)鐘初始化的部分,注釋掉即可,如下圖 注釋掉啟動(dòng)文件中的調(diào)用系統(tǒng)時(shí)鐘初始化的部分 然后編譯,啟動(dòng)調(diào)試,可以看到依然會(huì)停到main.s中的B
[單片機(jī)]
STM32】EEPROM讀寫浮點(diǎn)數(shù)、負(fù)整數(shù)
浮點(diǎn)數(shù)、負(fù)整數(shù)拆分與還原 問題:EEPROM需要按照字節(jié)存儲(chǔ),浮點(diǎn)數(shù)、負(fù)整數(shù)占用多個(gè)字節(jié),當(dāng)需要讀寫浮點(diǎn)數(shù)和負(fù)整數(shù)至EEPROM時(shí),需要對(duì)浮點(diǎn)數(shù)、負(fù)整數(shù)拆分與還原。 方法:獲取存儲(chǔ)浮點(diǎn)數(shù)、負(fù)整數(shù)的變量的指針,將該指針強(qiáng)制轉(zhuǎn)換為uint8*的指針,然后利用該指針將浮點(diǎn)數(shù)、負(fù)數(shù)拆分成單個(gè)字節(jié);將拆分后的字節(jié)寫入uint8型的數(shù)組中,然后將數(shù)組的指針強(qiáng)制轉(zhuǎn)換為拆分前變量的指針類型,即可重新還原浮點(diǎn)數(shù)、負(fù)整數(shù)。代碼如下: #include stdlib.h #define uint8 unsigned char #define uint16 unsigned short #define uint32 unsigned int #de
[單片機(jī)]
04 STM32外部中斷
1、綜述 ??(1)STM32F407的每個(gè)IO口都可以作為外部中斷的輸入口。 ??(2)STM32F407的中斷控制器支持22個(gè)外部中斷/事件請(qǐng)求。這也就是說(shuō),一共有22根外部中斷線(EXTI線)。而對(duì)于每個(gè)外部中斷線,可以獨(dú)立地配置觸發(fā)方式(上升沿、下降沿、雙邊沿觸發(fā))、觸發(fā)/屏蔽設(shè)置、發(fā)送的狀態(tài)位。 ??(3)這22根EXTI線中,有16根(0~15),是對(duì)應(yīng)著外部IO口的輸入中斷。但是,STM32F407擁有上百個(gè)IO口,而供IO口使用的中斷線只有16根。那么,中斷線如何與IO口對(duì)應(yīng)呢? ??(4)STM32做了這樣的設(shè)計(jì):同一組的IO最多有16個(gè),比如GPIOA.0~GPIOA.15、GPIOB.0~GPIOB.15等等
[單片機(jī)]
STM32代碼的啟動(dòng)過(guò)程
分享這篇文章,談一下STM32啟動(dòng)流程。如果讀者朋友已經(jīng)有過(guò)匯編相關(guān)基礎(chǔ),能夠夠好理解本文內(nèi)容。匯編語(yǔ)言是比C語(yǔ)言更接近機(jī)器底層的編程語(yǔ)言,能讓我們更好的理解和操縱硬件底層。 STM32三種啟動(dòng)模式 下好程序后,重啟芯片時(shí),SYSCLK的第4個(gè)上升沿,BOOT引腳的值將被鎖存,這就是所謂的啟動(dòng)過(guò)程。 STM32上電或者復(fù)位后,代碼區(qū)始終從0x00000000開始,其實(shí)就是將存儲(chǔ)空間的地址映射到0x00000000中。三種啟動(dòng)模式如下: 從主閃存存儲(chǔ)器啟動(dòng),將主Flash地址0x08000000映射到0x00000000,這樣代碼啟動(dòng)之后就相當(dāng)于從0x08000000開始。主閃存存儲(chǔ)器是STM32內(nèi)置的Flash,作為芯片內(nèi)置的
[單片機(jī)]
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved