STM32 HAL固件庫編程的文件構架


  對於我這種以前只接觸過51和AVR單片機編程的小菜來說,現在開始學習STM32的編程,對於函數的功能以及C語言的語法都還好理解,難的是它提供的那一套硬件抽象層(HAL)驅動是怎么和其他的東東搭配在一起組成一個又一個的工程。

  首先上兩張從ST官方提供的HAL固件庫文檔截圖

從這兩張圖的話,能對它的構架看出個一二,下面稍稍具體一點分析

  HAL固件庫編程,它的文件組織大致分三個部分

    - HAL驅動

    - CMSIS驅動

    - 用戶編寫程序

而假如你使用的是ST官網的開發板,那么你還有一套現成的驅動可供使用,板級支持包(BSP),那么正好向我一樣,但是,我不太喜歡使用這個東西,能自己寫還是自己寫的好。

  HAL驅動毫無疑問就是ST提供的一些包裝好的硬件抽象層的驅動,這個就是ST提供的利器,必須有,不用是不可能的。CMSIS的話,這個大概是ARM內核相關的一些驅動吧,這個一般我們編程都操縱不到,我們大部分都是調用HAL的程序。除了這兩個必須有的,當然主函數也是必須有的,還有其他的一些東東,這些還比較多,但都可以自己參照ST給的例程或是模板自己從零開始寫。

  下面就其中一些用戶配置,但涉及到驅動的文件做一些說明。

  有一個stm32f3xx_hal_conf.h(以F3系列為例說明)的HAL驅動配置文件,這個究竟是算HAL驅動還是用戶自定義文件呢,我更偏向於后者。在固件庫中會模板,可以去修改里面的內容,我就喜歡自己從頭寫,東西也不多,但是現在自己寫還不成功,再看看,這塊應該問題不大。

  stm32f3xx_it.c,這個文件在模板給的文件里有,但是東西不是很多,看名字就知道這個是和中斷有關,對於我的現階段,用到的中斷不多,用到就自己寫就好了。

  startup_xxx就是以startup開頭的一個什么文件,這個貌似是整個工程的起始文件,默認是放在CMSIS下,還是一個.s類型的文件。

  有個system什么的文件,它也是包含在CMSIS下的,這個和上一個的文件都比較特殊吧,不過好在這兩都不用我們去修改,只要到對應的文件夾下拷貝出來就好了。

  總之,就是分三部分,CMSIS,HAL和用戶自定義文件,這不管是在文件夾組織,還是在工程結構組織上都可以按照這個邏輯。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM