(二)、hal庫函式介紹
(三)、兩者之間的區別
二、mcu整合開發平台, stduino ide的實踐感悟(三)
三、總結
標準外設庫(standard peripherals library)是對stm32晶元的乙個完整的封裝,包括所有標準器件外設的器件驅動器。在使用中我們只需要配置結構體變數成員就可以修改外設的配置暫存器,從而選擇不同的功能。但是,標準外設庫也是針對某一系列晶元而言的,沒有可移植性。
這裡我們用以下**作為例子:
int
main
(void
)printf
("\r\n\r\n");
//插入換行
usart_rx_sta=0;
}else
if(times%
200==0)
printf
("請輸入資料,以回車鍵結束\r\n");
if(times%
30==0)
//閃爍led,提示系統正在執行.
delay_ms(10
);}}
}
hal庫是st公司提供的新標準庫,包含在st為新的標準庫註冊了乙個新商標:stmcube™當中。可以說hal庫就是用來取代之前的標準外設庫的。相比標準外設庫,stm32cube hal庫表現出更高的抽象整合水平,hal api集中關注各外設的公共函式功能,這樣便於定義一套通用的使用者友好的api函式介面,從而可以輕鬆實現從乙個stm32產品移植到另乙個不同的stm32系列產品。
以下**與上面實現同一功能:
int
main
(void
)else
if(times%
200==0)
printf
("請輸入資料,以回車鍵結束\r\n");
if(times%
30==
0)led0=
!led0;
//閃爍led,提示系統正在執行.
delay_ms(10
);}}
}
1、hal庫相對來說相容性更強,可以在不同的st平台下只需要修改最底層的硬體配置就可以實現在不同平台的移植。而lib庫相容性就沒有那麼強,f1和f4平台的差異化比較大,相容性不是很強
2、hal庫和stm32cubemux圖形化裁剪工具軟體強強聯手,通過stm32cubemux軟體可以配置裁剪後自動生成hal庫形式的軟體包,對底層相對不是很熟悉的使用者也可以實現快速化的開發,有點更高階一點語言的分層開發,驅動層和應用層剝離開
3、第三方元件的配置,比如usb驅動庫,freertos,fats,lwip等第三方的配置更加方便,更加相容,lib庫開發的一些需要使用者移植的第三方庫在hal庫的開發過程中可以完全省略掉。
4、軟體執行效率上來看,lib庫的軟體執行效率,**的精簡性更勝一籌,而hal庫的api介面更加豐富,執行效率上來看差lib庫一些
5、未來的發展來看:hal庫會逐步替代lib庫,所以掌握hal庫的整體架構是非常有必要的,包括整個以hal庫為基礎的軟體開發流程,hal庫整體軟體架構。使用者如何將這個hal庫能整體全域性把握+底層外設驅動結合+邏輯層的分層實現+第三方庫使用和移植?以上這幾個點全部掌握才能做出穩定的產品,也能提高工程師自身的專業技能
6、通過以上兩個範例程式的編譯對比,以及**內容對比來看我們可以發現:實現同一功能的程式,基於標準庫的程式語句比基於hal庫的程式語句要更複雜。
所以在這裡,我推薦使用hal庫,原因如下:
第一、 f7系列開始 st公司就已近開始停止更新標準庫,也就是f7開始包括f7已經不能用標準庫了,公司對於主打hal庫的目的已經非常明顯了。
第二、追求更方便、追求模組化向來是世界的潮流,更方便的hal庫一定會迅速發展,低效的短板遲早會被硬體高度整合化所彌補。
本次通過對基於標準庫函式與基於hal庫函式的stm32程式設計方式之間的對比,總結了兩者各自的特點和區別,了解了兩個不同庫之間各自的優勢優點,並對mcu整合開發平台, stduino ide有了一定的了解,學到了很多。
stm32下標準庫函式與HAL庫函式程式設計方式的差異
由於暫存器開發難度很大,因此st公司就專門編寫了晶元的庫函式 韌體庫 將一些常用量的巨集定義和一些外設也通過結構體變數封裝起來,如gpio口時鐘等。所以我們只需要配置結構體變數成員就可以修改外設的配置暫存器,從而選擇不同的功能。標準外設庫 standard peripherals library 是...
qsort庫函式和函式指標
這個函式對陣列排序時需要知道 陣列起始的位址 陣列元素的個數 每個元素的大小 元素的排序規則 中每個單詞的含義 base 待排序陣列位址的起始位址 nelem 待排序陣列的元素個數 width 每個元素的大小 pfcompare 比較函式的位址 該比較函式需自己編寫規則 ps pf函式形式 int ...
系統呼叫和庫函式
unix 環境高階程式設計 一書中如此說 所有作業系統都提供多種服務的入口點,由此程式向系統核請求服務。各種版本的unix都 提供經良好定義的有限數目的入口點,經過這些入口點進入系統核,這些入口點被稱之為 系統呼叫 system call 系統呼叫是我們不能更改的一種unix特徵。unix版本7提供...