引言
我們?cè)谶M(jìn)行STM32開發(fā)的時(shí)候,使用寄存器進(jìn)行開發(fā)的終究是少數(shù),大多數(shù)人還是習(xí)慣用庫(kù)函數(shù)進(jìn)行開發(fā)。到目前為止,有標(biāo)準(zhǔn)外設(shè)庫(kù)、HAL庫(kù)、LL庫(kù) 三種。本文將分別介紹以下三種庫(kù),便于大家區(qū)分。
介紹
標(biāo)準(zhǔn)庫(kù)
標(biāo)準(zhǔn)庫(kù)(Standard Peripheral Library)是STMicroelectronics提供的最基本的庫(kù)。它提供了對(duì)STM32微控制器的底層寄存器和外設(shè)的直接訪問。標(biāo)準(zhǔn)庫(kù)的設(shè)計(jì)目標(biāo)是提供高度靈活性和低層次的硬件控制,以滿足對(duì)性能和資源的嚴(yán)格要求。使用標(biāo)準(zhǔn)庫(kù),開發(fā)人員可以直接操作寄存器來配置和控制微控制器的功能,但需要手動(dòng)編寫大量的底層代碼。標(biāo)準(zhǔn)庫(kù)適用于對(duì)性能要求較高的應(yīng)用和對(duì)代碼大小和效率有嚴(yán)格要求的項(xiàng)目。
HAL庫(kù)
HAL庫(kù)(Hardware Abstraction Layer)是STMicroelectronics為了提供更高級(jí)別的抽象和簡(jiǎn)化開發(fā)而引入的庫(kù)。HAL庫(kù)基于標(biāo)準(zhǔn)庫(kù),并提供了一組API函數(shù),將底層硬件操作抽象為高級(jí)函數(shù)調(diào)用。這樣,開發(fā)人員可以使用更高級(jí)別的API函數(shù)來進(jìn)行配置和控制微控制器的功能,而不需要直接操作底層寄存器。HAL庫(kù)提供了一種更易用和可移植的編程模型,并減少了編寫底層代碼的工作量。它還支持多種開發(fā)板和外設(shè),提供了一致的接口,簡(jiǎn)化了代碼移植和復(fù)用。HAL庫(kù)適用于大多數(shù)應(yīng)用程序,尤其是中等復(fù)雜性的項(xiàng)目。
LL庫(kù)
LL庫(kù)(Low-Level Library)是STMicroelectronics在HAL庫(kù)的基礎(chǔ)上提供的更低級(jí)別的庫(kù)。LL庫(kù)提供了對(duì)底層寄存器和外設(shè)的更直接的訪問,并提供了一組低級(jí)別的API函數(shù)。LL庫(kù)保留了更多的硬件細(xì)節(jié),為開發(fā)人員提供了更高級(jí)別的靈活性和控制。使用LL庫(kù),開發(fā)人員可以直接編寫更底層的代碼,實(shí)現(xiàn)對(duì)微控制器和外設(shè)的精細(xì)控制。LL庫(kù)適用于對(duì)性能和資源要求極高,以及對(duì)底層硬件控制有特殊需求的應(yīng)用。
三者的關(guān)系
在這三種庫(kù)中,出現(xiàn)的先后順序是標(biāo)準(zhǔn)庫(kù)—HAL庫(kù)—LL庫(kù),所以大家如果在網(wǎng)上 看到LL庫(kù)編寫的程序,大概是不久完成的,看到標(biāo)準(zhǔn)庫(kù),可能就是稍早一些時(shí)候的了。
這幾種庫(kù)的比較官方介紹如下圖:
HAL庫(kù)雖然移植性最好,但問題也最多。比如在串口收發(fā)的時(shí)候,由于HAL庫(kù)中的中斷接收和串口發(fā)送使用的互斥鎖是一個(gè),所以會(huì)造成好好的全雙工變成了半雙工。而標(biāo)準(zhǔn)庫(kù)和LL庫(kù)都沒有這個(gè)問題。諸如此類的問題還有很多,但HAL庫(kù)確實(shí)開發(fā)效率最高。具體使用效果因人而異吧。文章來源:http://www.zghlxwxcb.cn/news/detail-643137.html
總結(jié)
ST提供的標(biāo)準(zhǔn)庫(kù)、HAL庫(kù)和LL庫(kù)各有其優(yōu)勢(shì)和特點(diǎn),如果是移植很久前的項(xiàng)目,大概率要使用標(biāo)準(zhǔn)庫(kù)。如果新開發(fā)項(xiàng)目,使用STM32CubeMX就必須使用HAL庫(kù)和LL庫(kù)了。個(gè)人建議,現(xiàn)在最好是使用HAL庫(kù)+LL庫(kù)進(jìn)行開發(fā),因?yàn)檫@是官方主推的庫(kù),并且CubeMX確實(shí)是個(gè)很好用的工具,而里面只有HAL庫(kù)和LL庫(kù)。HAL庫(kù)開發(fā)迅速,LL庫(kù)開發(fā)穩(wěn)定,大家可以結(jié)合著用。文章來源地址http://www.zghlxwxcb.cn/news/detail-643137.html
到了這里,關(guān)于STM32之HAL、LL和標(biāo)準(zhǔn)庫(kù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!