開始學習51的時候有的人會直接選擇進行對單片機的寄存器進行操作,可以很好的理解單片機的工作原理,對于代碼的編寫也會后很好的理解,但是在stm32的時候操作寄存器就不太行了,因為stm32的寄存器是51的數十倍,如此多的寄存器根本無法全部記憶,開發時需要經常的翻查芯片的數據手冊,此時直接操作寄存器就變得非常的費力了。這是我們就有了其他的操作方式,來簡化我們的工作。
一、標準庫
STM32有非常多的寄存器,導致了開發困難,所以為此ST公司就為每款芯片都編寫了一份庫文件,也就是工程文件里stm32F1xx……之類的。在這些 .c .h文件中,包括一些常用量的宏定義,把一些外設也通過結構體變量封裝起來,如GPIO口時鐘等。所以我們只需要配置結構體變量成員就可以修改外設的配置寄存器,從而選擇不同的功能。也是目前最多人使用的方式,也是學習STM32接觸最多的一種開發方式。
二、HAL庫
HAL庫是ST公司目前主力推的開發方式,全稱就是Hardware Abstraction Layer(抽象印象層)。庫如其名,很抽象,一眼看上去不太容易知道他的作用是什么。它的出現比標準庫要晚,但其實和標準庫一樣,都是為了節省程序開發的時期,而且HAL庫尤其的有效,如果說標準庫把實現功能需要配置的寄存器集成了,那么HAL庫的一些函數甚至可以做到某些特定功能的集成。也就是說,同樣的功能,標準庫可能要用幾句話,HAL庫只需用一句話就夠了。并且HAL庫也很好的解決了程序移植的問題,不同型號的stm32芯片它的標準庫是不一樣的,但使用HAL庫,只要使用的是相通的外設,程序基本可以完全復制粘貼,注意是相通外設,意思也就是不能無中生有。而且使用ST公司研發的STMcube軟件,可以通過圖形化的配置功能,直接生成整個使用HAL庫的工程文件,可以說是方便至極。
三、庫函數與HAL庫對比
1.串口通信實驗庫函數部分代碼
HAL函數代碼
2.庫函數與HAL庫比較庫函數配置好串口以后,當串口接收到數據再發送給上位機時需要循環發送,但是HAL庫就直接調用HAL_UART_Transmit函數就能直接將串口的數據發給上位機。庫函數不免比HAL更加的麻煩。庫函數的串口通信函數只適用于STM32F1系列,對于其他系列的就不能通用了;但是對于HAL庫來說,只要外設相同,基本上能夠很容易的移植。可以說HAL庫就是用來取代之前的標準外設庫的。
總結
相比標準外設庫,STM32Cube HAL庫表現出更高的抽象整合水平,HAL API集中關注各外設的公共函數功能,這樣便于定義一套通用的用戶友好的API函數接口,從而可以輕松實現從一個STM32產品移植到另一個不同的STM32系列產品。對于我們這種水平的新手而言,HAL更加的友好,可以降低我們開發的門檻,但是如果想要更好的理解代碼實現的原理以及對寄存器的調用原理,標準庫更好的理解,可能相對較難,但是理解代碼的實現也是我們必須的。
-
函數
+關注
關注
3文章
4344瀏覽量
62859 -
應用軟件
+關注
關注
0文章
52瀏覽量
9114
發布評論請先 登錄
相關推薦
評論