找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 1983|回復: 1
收起左側

STM32基于標準庫函數(shù)和HAL庫編程差異

[復制鏈接]
ID:1034553 發(fā)表于 2022-6-15 00:22 | 顯示全部樓層 |閱讀模式

(一)開發(fā)方式
1.配置寄存器
2.庫函數(shù)
3.HAL庫
(二)庫函數(shù)與HAL庫對比
1.串口通信實驗
2.庫函數(shù)與HAL庫比較
(三)總結
(一)開發(fā)方式
1.配置寄存器
很多人學習51單片機開發(fā)的時候,基本都是直接操作寄存器進行單片機的控制,但是當他們轉向STM32開發(fā)的時候,直接操作寄存器不是那么容易了,因為STM32的寄存器數(shù)量是51單片機的許多倍,開發(fā)時經(jīng)常需要翻查芯片的數(shù)據(jù)手冊,此時直接操作寄存器就變得非常的費力了。
但是寄存器是最接近硬件的部分,直接操作寄存器能夠很容易的實現(xiàn)自己想要的功能,并且遇到問題時能夠知道是哪個寄存器的配置出現(xiàn)了問題,這種開發(fā)方式雖然十分麻煩但卻讓人能夠深入理解單片機的運行原理。
2.庫函數(shù)
由于寄存器開發(fā)難度很大,因此ST公司就專門編寫了芯片的庫函數(shù)(固件庫),將一些常用量的宏定義和一些外設也通過結構體變量封裝起來,如GPIO口時鐘等。所以我們只需要配置結構體變量成員就可以修改外設的配置寄存器,從而選擇不同的功能。
標準外設庫(Standard Peripherals Library)是對STM32芯片的一個完整的封裝,包括所有標準器件外設的器件驅動器。這應該是目前使用最多的ST庫,幾乎全部使用C語言實現(xiàn)。但是,標準外設庫也是針對某一系列芯片而言的,沒有可移植性。
3.HAL庫
HAL(HardwareAbstraction Layer)是硬件的抽象層,它表現(xiàn)出更高的抽象整合水平,HAL API集中關注各外設的公共函數(shù)功能,這樣便于定義一套通用的對用戶友好的API函數(shù)接口,從而可以輕松實現(xiàn)從一個STM32產品移植到另一個不同的STM32系列產品。下圖是HAL庫的整體框架。
HAL庫是ST未來主推的庫,從前年開始ST新出的芯片已經(jīng)沒有STD庫了,比如F7系列�,F(xiàn)在,ST主推HAL庫,目前,HAL庫已經(jīng)支持STM32全線產品�?偟膩碚f,HAL庫相對于庫函數(shù)層次架構更加清晰,更加抽象。
(二)庫函數(shù)與HAL庫對比
1.串口通信實驗
庫函數(shù)主要代碼
HAL庫主要代碼
2.庫函數(shù)與HAL庫比較
庫函數(shù)配置好串口以后,當串口接收到數(shù)據(jù)再發(fā)送給上位機時需要循環(huán)發(fā)送,但是HAL庫就直接調用HAL_UART_Transmit函數(shù)就能直接將串口的數(shù)據(jù)發(fā)給上位機。
庫函數(shù)的串口通信函數(shù)只適用于STM32F1系列,對于其他系列的就不能通用了;但是對于HAL庫來說,只要外設相同,基本上能夠很容易的移植。
(三)總結
通過比較STM32庫函數(shù)和HAL庫的開發(fā)方式,庫函數(shù)和HAL庫其實本質上都是將STM32的底層的寄存器進行封裝并向用戶提供友好的接口,這都極大的降低了用戶的開發(fā)門檻。但是相對于庫函數(shù)來說,HAL庫更加“通用”,能夠較好的移植到其他的芯片上去,但也正是這樣,導致其代碼比較龐大、執(zhí)行效率比較低的結果�?偟膩碚f,HAL庫相對于庫函數(shù)更加友好,能夠讓用戶將精力放在開發(fā)的產品上而不是怎么實現(xiàn)。
回復

使用道具 舉報

ID:45334 發(fā)表于 2022-6-15 08:30 | 顯示全部樓層
試試LL庫
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表