開始學(xué)習(xí)51的時候有的人會直接選擇進(jìn)行對單片機的寄存器進(jìn)行操作,可以很好的理解單片機的工作原理,對于代碼的編寫也會后很好的理解,但是在stm32的時候操作寄存器就不太行了,因為stm32的寄存器是51的數(shù)十倍,如此多的寄存器根本無法全部記憶,開發(fā)時需要經(jīng)常的翻查芯片的數(shù)據(jù)手冊,此時直接操作寄存器就變得非常的費力了。這是我們就有了其他的操作方式,來簡化我們的工作。
一、標(biāo)準(zhǔn)庫
STM32有非常多的寄存器,導(dǎo)致了開發(fā)困難,所以為此ST公司就為每款芯片都編寫了一份庫文件,也就是工程文件里stm32F1xx……之類的。在這些 .c .h文件中,包括一些常用量的宏定義,把一些外設(shè)也通過結(jié)構(gòu)體變量封裝起來,如GPIO口時鐘等。所以我們只需要配置結(jié)構(gòu)體變量成員就可以修改外設(shè)的配置寄存器,從而選擇不同的功能。也是目前最多人使用的方式,也是學(xué)習(xí)STM32接觸最多的一種開發(fā)方式。
二、HAL庫
HAL庫是ST公司目前主力推的開發(fā)方式,全稱就是Hardware Abstraction Layer(抽象印象層)。庫如其名,很抽象,一眼看上去不太容易知道他的作用是什么。它的出現(xiàn)比標(biāo)準(zhǔn)庫要晚,但其實和標(biāo)準(zhǔn)庫一樣,都是為了節(jié)省程序開發(fā)的時期,而且HAL庫尤其的有效,如果說標(biāo)準(zhǔn)庫把實現(xiàn)功能需要配置的寄存器集成了,那么HAL庫的一些函數(shù)甚至可以做到某些特定功能的集成。也就是說,同樣的功能,標(biāo)準(zhǔn)庫可能要用幾句話,HAL庫只需用一句話就夠了。并且HAL庫也很好的解決了程序移植的問題,不同型號的stm32芯片它的標(biāo)準(zhǔn)庫是不一樣的,但使用HAL庫,只要使用的是相通的外設(shè),程序基本可以完全復(fù)制粘貼,注意是相通外設(shè),意思也就是不能無中生有。而且使用ST公司研發(fā)的STMcube軟件,可以通過圖形化的配置功能,直接生成整個使用HAL庫的工程文件,可以說是方便至極。
三、庫函數(shù)與HAL庫對比
1.串口通信實驗庫函數(shù)部分代碼
HAL函數(shù)代碼
2.庫函數(shù)與HAL庫比較庫函數(shù)配置好串口以后,當(dāng)串口接收到數(shù)據(jù)再發(fā)送給上位機時需要循環(huán)發(fā)送,但是HAL庫就直接調(diào)用HAL_UART_Transmit函數(shù)就能直接將串口的數(shù)據(jù)發(fā)給上位機。庫函數(shù)不免比HAL更加的麻煩。庫函數(shù)的串口通信函數(shù)只適用于STM32F1系列,對于其他系列的就不能通用了;但是對于HAL庫來說,只要外設(shè)相同,基本上能夠很容易的移植。可以說HAL庫就是用來取代之前的標(biāo)準(zhǔn)外設(shè)庫的。
總結(jié)
相比標(biāo)準(zhǔn)外設(shè)庫,STM32Cube HAL庫表現(xiàn)出更高的抽象整合水平,HAL API集中關(guān)注各外設(shè)的公共函數(shù)功能,這樣便于定義一套通用的用戶友好的API函數(shù)接口,從而可以輕松實現(xiàn)從一個STM32產(chǎn)品移植到另一個不同的STM32系列產(chǎn)品。對于我們這種水平的新手而言,HAL更加的友好,可以降低我們開發(fā)的門檻,但是如果想要更好的理解代碼實現(xiàn)的原理以及對寄存器的調(diào)用原理,標(biāo)準(zhǔn)庫更好的理解,可能相對較難,但是理解代碼的實現(xiàn)也是我們必須的。
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4417瀏覽量
67568 -
應(yīng)用軟件
+關(guān)注
關(guān)注
0文章
53瀏覽量
9421
發(fā)布評論請先 登錄
在ADS編譯器中,用標(biāo)準(zhǔn)的C庫函數(shù)printf()需要哪些設(shè)置呢?
labview調(diào)用pylon庫函數(shù)失敗
微庫與標(biāo)準(zhǔn)C庫的區(qū)別
LUA例程-常用的回調(diào)函數(shù)使用說明
單片機啟動&庫函數(shù)的構(gòu)成
深度剖析Nios II 處理器的硬件抽象層
在rtthread的main函數(shù)里用HAL_Delay函數(shù)不起作用是哪里的問題?
詳解hal_entry入口函數(shù)
求CS32A010K8V7的庫函數(shù)使用教程
自己寫庫:構(gòu)建庫函數(shù)雛形
標(biāo)準(zhǔn)庫函數(shù)與基于HAL庫函數(shù)的說明
評論