新手學STM32的話,先學標準庫還是HAL庫?
大家好,我是麥鴿,最近有網友提問
用STM32的話,是學標準庫還是HAL庫?
對于新手,我想說,不要和自己過不去,一開始不要搞得太難,要循序漸進。
新手經常會問的問題,先學51還是STM32,
或者之前有網友提問,寫PC軟件是學MFC還是Qt?
其實諸如此類的問題,都不能忽略一個問題就是學習曲線,是否對初學者友好。然后再看后續是否再值得深入學習,是否有學習的價值。
對于單片機而言,標準庫還是HAL庫,只不過是操作硬件的中間件而已,我們不需要再去生硬地去查芯片手冊,去配置寄存器,可以更快地搞定底層的配置,集中精力搞定應用部分的開發。
image
單片機開發通常是這樣架構,或者會再跑個RTOS,一般裸機開發,我們會把一些硬件模塊寫成單獨的驅動模塊,向上提供接口給應用層。
而這里會操作到一些芯片的資源,就可以通過調用固件庫里的接口,比如配置GPIO,硬件I2C和SPI,或者中斷和定時器,使用庫函數,或者HAL庫,一條函數就夠了,自己配置寄存器可能需要十幾條語句,而且配置寄存器的話,如果有點粗心配置錯了,那么中間所花費的調試時間,也會很長。
- 直接寄存器配置,代碼效率高,開發效率低;
- 使用標準庫,中等代碼效率,開發效率中等;
- 使用HAL庫,中間冗余代碼會更多,多占用一部分系統性能,但是開發效率高;
另外,STM32的標準庫貌似已經不在更新了,如果作為學習的話,也是可以的,學習資源還是很多的。
如果直接學HAL庫,也沒問題,學習資源也很多。比如CUBEMX直接支持圖形化配置了。
關鍵不管學習哪一個庫,不能只停留在表面。
換個庫,或者換個硬件平臺,就啥都不會了,這樣還是不行。其實通過學習標準庫,或者學習HAL庫,去熟悉STM32這個平臺,例如;
通用的一些外設,比如ADC,UART,I2C或者SPI等等;常用的中斷,定時器中斷,外部中斷,如何觸發方式;
去了解這些庫的封裝方式。
調試的時候,可以調入底層去看。到后面我們其實會發現,如果換一個硬件平臺,或者換一個庫,本質還是相同的,無非是對底層的近一步封裝,多看看官方提供的Demo程序,學會自己移植,增加新的功能。
遇到硬件Bug的時候,還是要Debug到底層,對著芯片手冊去排查,到這一步,那么你的開發水平其實也算不錯了的。實在解決不了,再找原廠的FAE去解決哈。慢慢地,開發水平就提高了。
*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。











