博客專(zhuān)欄

EEPW首頁(yè) > 博客 > 新手學(xué)STM32的話(huà),先學(xué)標(biāo)準(zhǔn)庫(kù)還是HAL庫(kù)?

新手學(xué)STM32的話(huà),先學(xué)標(biāo)準(zhǔn)庫(kù)還是HAL庫(kù)?

發(fā)布人:xiaomaidashu 時(shí)間:2025-08-04 來(lái)源:工程師 發(fā)布文章

大家好,我是麥鴿,最近有網(wǎng)友提問(wèn)

用STM32的話(huà),是學(xué)標(biāo)準(zhǔn)庫(kù)還是HAL庫(kù)?

對(duì)于新手,我想說(shuō),不要和自己過(guò)不去,一開(kāi)始不要搞得太難,要循序漸進(jìn)。

新手經(jīng)常會(huì)問(wèn)的問(wèn)題,先學(xué)51還是STM32,

或者之前有網(wǎng)友提問(wèn),寫(xiě)PC軟件是學(xué)MFC還是Qt?

其實(shí)諸如此類(lèi)的問(wèn)題,都不能忽略一個(gè)問(wèn)題就是學(xué)習(xí)曲線,是否對(duì)初學(xué)者友好。然后再看后續(xù)是否再值得深入學(xué)習(xí),是否有學(xué)習(xí)的價(jià)值。

對(duì)于單片機(jī)而言,標(biāo)準(zhǔn)庫(kù)還是HAL庫(kù),只不過(guò)是操作硬件的中間件而已,我們不需要再去生硬地去查芯片手冊(cè),去配置寄存器,可以更快地搞定底層的配置,集中精力搞定應(yīng)用部分的開(kāi)發(fā)。

image

單片機(jī)開(kāi)發(fā)通常是這樣架構(gòu),或者會(huì)再跑個(gè)RTOS,一般裸機(jī)開(kāi)發(fā),我們會(huì)把一些硬件模塊寫(xiě)成單獨(dú)的驅(qū)動(dòng)模塊,向上提供接口給應(yīng)用層。

而這里會(huì)操作到一些芯片的資源,就可以通過(guò)調(diào)用固件庫(kù)里的接口,比如配置GPIO,硬件I2C和SPI,或者中斷和定時(shí)器,使用庫(kù)函數(shù),或者HAL庫(kù),一條函數(shù)就夠了,自己配置寄存器可能需要十幾條語(yǔ)句,而且配置寄存器的話(huà),如果有點(diǎn)粗心配置錯(cuò)了,那么中間所花費(fèi)的調(diào)試時(shí)間,也會(huì)很長(zhǎng)。

  • 直接寄存器配置,代碼效率高,開(kāi)發(fā)效率低;
  • 使用標(biāo)準(zhǔn)庫(kù),中等代碼效率,開(kāi)發(fā)效率中等;
  • 使用HAL庫(kù),中間冗余代碼會(huì)更多,多占用一部分系統(tǒng)性能,但是開(kāi)發(fā)效率高;

另外,STM32的標(biāo)準(zhǔn)庫(kù)貌似已經(jīng)不在更新了,如果作為學(xué)習(xí)的話(huà),也是可以的,學(xué)習(xí)資源還是很多的。

如果直接學(xué)HAL庫(kù),也沒(méi)問(wèn)題,學(xué)習(xí)資源也很多。比如CUBEMX直接支持圖形化配置了。

關(guān)鍵不管學(xué)習(xí)哪一個(gè)庫(kù),不能只停留在表面。

換個(gè)庫(kù),或者換個(gè)硬件平臺(tái),就啥都不會(huì)了,這樣還是不行。其實(shí)通過(guò)學(xué)習(xí)標(biāo)準(zhǔn)庫(kù),或者學(xué)習(xí)HAL庫(kù),去熟悉STM32這個(gè)平臺(tái),例如;

通用的一些外設(shè),比如ADC,UART,I2C或者SPI等等;常用的中斷,定時(shí)器中斷,外部中斷,如何觸發(fā)方式;

去了解這些庫(kù)的封裝方式。

調(diào)試的時(shí)候,可以調(diào)入底層去看。到后面我們其實(shí)會(huì)發(fā)現(xiàn),如果換一個(gè)硬件平臺(tái),或者換一個(gè)庫(kù),本質(zhì)還是相同的,無(wú)非是對(duì)底層的近一步封裝,多看看官方提供的Demo程序,學(xué)會(huì)自己移植,增加新的功能。

遇到硬件Bug的時(shí)候,還是要Debug到底層,對(duì)著芯片手冊(cè)去排查,到這一步,那么你的開(kāi)發(fā)水平其實(shí)也算不錯(cuò)了的。實(shí)在解決不了,再找原廠的FAE去解決哈。慢慢地,開(kāi)發(fā)水平就提高了。


*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。


關(guān)鍵詞: STM32 HAL庫(kù)

相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉