那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

HAL工程應該這樣搭建

朱老師物聯網大講堂 ? 2024-03-26 08:09 ? 次閱讀

一、為何要自己手動搭建一個軟件工程?

(1)在Keil MDK的開發環境下:工程師都會找一個模板,這個模板可能是在某一家開發板廠家提供的一個例程的基礎上進行修改;也可能是這個工程師通過多年的開發經驗有自己的一套工程模板。

(2)第一種情況下可能占據比例會更多一些,第二種情況是有經驗的工程師自己通過多年的經驗和能力來構建工程。個人觀點:不管從哪看到模板,不管用誰的模板,在自己經驗和能力到達一定的水平后自己創建一個適合自己的模板。這樣的好處就是在單片機+MDK這個開發平臺下可以掌握全局,任意修改,整體的軟件架構根據自己的喜好能隨意修改,優化,做到隨心所欲。

25a38d6e-eb05-11ee-9118-92fbcf53809c.gif

二、在Keil5+STM32F429**平臺下的軟件工程搭建

(1)在PC端造一個位置,創建一個文件夾,文件夾名字叫"02.MDK5+STM32F429"

(2)打開文件夾,創建5個子文件夾

25aec8dc-eb05-11ee-9118-92fbcf53809c.png

備注:這樣我們就把基礎的文件夾全部創建好了,這樣做的原因是什么?分層。創建一個軟件工程在分層的架構下才能在后續的開發中縷清思路,不會因增加一些功能而每次軟件架構都在不停的變動,開發效率降低。

25a38d6e-eb05-11ee-9118-92fbcf53809c.gif

三、打開Keil MDK5軟件創建一個新工程

(1)在如下步驟中找到創建工程窗口

25c3447e-eb05-11ee-9118-92fbcf53809c.png

(2)選擇存儲創建工程的路徑,D:\Personal\Embedded\02.STM32\02.個人開發\STM32F429xx\Example\02.MDK5+STM32F429\Project。這個是我自己創建的工程路徑,這個路徑的最后一級是上一步創建的Project文件夾,工程名叫Demo,這個名字根據自己的習慣來命名。

25cab178-eb05-11ee-9118-92fbcf53809c.png

(3)點擊保存,然后出現如下界面,這個界面是進行芯片的選型的,這次例程使用的是STM32F429ZITx這個Cortex-M4內核芯片,144pin,256K RAM,2M Flash。根據自己使用的型號選擇后點擊OK。

25e7666a-eb05-11ee-9118-92fbcf53809c.png

(4)出現如下界面,我們不做選擇,直接點擊Cancel,這個界面是添加一些組件,這些組件我們暫時不需要,根據自己后面的實際項目需求來選擇。

25f20926-eb05-11ee-9118-92fbcf53809c.png

(5)創建完成后,出現如下基礎工程,當然這個工程只是我們創建的第一步,后續還要添加很多文件來完善。

25fceb66-eb05-11ee-9118-92fbcf53809c.png

在Project文件夾下有我們創建成功的工程

25a38d6e-eb05-11ee-9118-92fbcf53809c.gif

四、在各個文件夾下添加所需文件

2614c2cc-eb05-11ee-9118-92fbcf53809c.png(1)這些文件我們在哪里查找?首先要在MDK安裝目錄下有自己對應的xxx_DFP包,為什么需要這個xxx_DFP包?這個包里包含STM32F4xx系列新品的啟動文件,配置文件,HAL庫,ST官方提供的開發板的相關Demo例程。這個包是ST官方提供的,可以在ST官網上下載,當然也可以在MDK5軟件下進行下載 。MD5軟件下載xxx_DFP包方法如下:@1.打開MDK5軟件,將紅圈這個圖標打開,這個圖標的英文名是"packet installer"

26243af4-eb05-11ee-9118-92fbcf53809c.png

@2.在安裝界面找到ST公司系列新品,F4系列處理器任意點擊,然后右側會有提示安裝xxx_DFP安裝包,點擊install,安裝。這個過程比較漫長。因為這個包在ST的境外服務器放置,所以下載過程中會有不穩定斷開情況,如果斷開后點擊關閉重復上述操作,會在上次的斷點處開始下載,不影響包的質量,下圖這個提示是我已經安裝過了,有updata,但updata是灰色的,表示沒有包的更新

2639e4a8-eb05-11ee-9118-92fbcf53809c.png

@3.這個包下載完成后,下載到哪個位置了?下載到你的MDK5的安裝目錄下的某一個路徑了,我們要尋找這個包可以按照以下路徑來尋找。C:\Personal\install\Work Software\MDK-526\ARM\PACK\Keil。任何一個使用者按照上述步驟操作,都會在相似的目錄下找到這個包,紅色圈圈圈住的這個包就是下載好的,當然下載好后會自動解壓,接下來我們就需要這個DFP包下的一些重要文件來拷貝到我們新建的工程下。

264f9a96-eb05-11ee-9118-92fbcf53809c.png

(2)在創建的工程的Libraries文件夾下再創建3個文件夾

2658c7d8-eb05-11ee-9118-92fbcf53809c.png

(3)在Startup下放置一些啟動文件@1.第一個文件是:startup_stm32f429xx.s文件,將這個文件拷貝到Startup文件下。

265fe2ac-eb05-11ee-9118-92fbcf53809c.png

@2.其他文件分別是:core_cm4.h, core_cmFunc.h, core_cmInstr.h,core_cmSimd.h拷貝到Startup文件下

266ffa2a-eb05-11ee-9118-92fbcf53809c.png

@3.這個文件下最終文件如下

268027a6-eb05-11ee-9118-92fbcf53809c.png

(4)在HALlib文件夾下放置HAL庫文件

@1.將Inc和Src文件拷貝到HALlib文件夾下,這兩個文件就是HAL庫,里面全都是API接口函數

26877ff6-eb05-11ee-9118-92fbcf53809c.png

(5)在SysF4xxInc下面放置一些F4相關配置文件

@1.將stm32f4xx.h和stm32f429xx.h文件這兩個文件拷貝到SysF4xxInc文件夾下,如下圖所示:

2697992c-eb05-11ee-9118-92fbcf53809c.png

(6)在App文件夾下創建一個文件夾,在這個文件夾下放置一些,用戶需要配置+中斷函數文件+HAL庫底層硬件驅動接口文件等

@1.創建SysLibraryConfig文件

26a13888-eb05-11ee-9118-92fbcf53809c.png

@2.在這個SysLibraryConfig文件夾下添加相關文件:system_stm32f4xx.h

26ae8588-eb05-11ee-9118-92fbcf53809c.png

@3.把main.h,stm32f4xx_hal_conf.h,stm32f4xx_it.h 這3個文件拷貝到SysLibraryConfig文件夾下

26c002b8-eb05-11ee-9118-92fbcf53809c.png

@4.將stm32f4xx_hal_msp.c,stm32f4xx_it.h,system_stm32f4xx.h 3個文件拷貝到SysLibraryConfig文件夾下,將main.c文件拷貝當App文件夾下

26d2e9d2-eb05-11ee-9118-92fbcf53809c.png

@5.拷貝完成后App文件夾下如下所示

26eba328-eb05-11ee-9118-92fbcf53809c.png

26fbf25a-eb05-11ee-9118-92fbcf53809c.png

備注:到這一步已經將所有的文件在工程文件夾下全部添加完成了,接下來需要做的事情是在MDK工程里添加各種文件以及文件路徑,進行環境配置

25a38d6e-eb05-11ee-9118-92fbcf53809c.gif

五、在MDK工程下添加文件

(1)點擊圖標進入配置界面

2709a0d0-eb05-11ee-9118-92fbcf53809c.png

(2)在配置界面下創建這幾個文件路徑

271e1858-eb05-11ee-9118-92fbcf53809c.png

@1.Startup組放置啟動文件,點擊Add Files,進入啟動文件路徑選擇界面,在/Libraries/Startup文件下將啟動文件全部添加進去,點擊Add添加,添加完成后close退出

@2.根據@1的步驟在Libraries組下點擊Add Files,將Libraries/HALlib/Src路徑下的.c文件全部添加進去,這個就是HAL庫文件,后續的外設開發API接口幾乎都是調用這個文件夾下的

@3.和@2操作類似,SysF4xxInc組下將Libraries/HALlib/SysF4xxInc的全部文件添加進去

@4.在App組下main.c添加進去

@5.在SysLibraryConfig組下將App/SysLibraryConfig文件添加進去,這個可以只添加.c文件

@6.將ReadMe組下添加/ReadMe/ReadMe.txt添加進去

@7.到了這一步后所有的文件都添加進去了,接下來需要做的是添加文件路徑了

25a38d6e-eb05-11ee-9118-92fbcf53809c.gif

六、在MDK下添加路路徑

(1)點擊魔術棒進入如下界面,第1步:點擊C/C++;第2步:點擊“紅圈圈3”那個位置“include paths”添加路徑,第3步:點擊“紅圈圈4”進行路徑添加

272afb5e-eb05-11ee-9118-92fbcf53809c.png

(2)除了這個工程下的Project路徑無需添加之外,其他所有文件的路徑必須全部添加進去,否則可能會出現編譯時文件無法找到路徑現象,最終路徑添加結果如下,點擊OK確定就可以,點擊完成后表示路徑添加完成了

(3)在define那一欄需要添加全局宏定義,USE_HAL_DRIVER,STM32F429xx,否則編譯時會報錯

(4)編譯文件輸出路徑選擇

Output選首先勾選Create HEX File,表示編譯生成可執行文件,點擊Select Dolder For Object,在Projecet文件下 點擊“新建文件夾”圖標,創建Output文件,這樣輸出文件就在Output文件夾里面了

(5)到了這一步,離成功差90%了,千萬別放棄,接線來就是進行對工程編譯,工程如何編譯就不詳細說了,下面只呈現結果

編譯完成后提示2個警告,2個錯誤,先看看錯誤是什么原因:HAL_MspDeInit函數和HAL_MspInit函數在stm32f4xx_hal_msp.c和stm32f4xx_hal_msp_template.c 2個源文件下重復定義,我們將stm32f4xx_hal_msp_template.c這個.c文件在Libraries添加路徑下移除掉移除方法如下:

找到后點擊紅圈圈里的圖標,這樣整個工程里就不包含stm32f4xx_hal_msp_template.c文件了

27379b16-eb05-11ee-9118-92fbcf53809c.png

(6)移除完成后再次編譯,顯示編譯2警告,0錯誤

這個警告的意思是__packed在這個地方無法用到,這個可能是一些參數配置的問題,此處我們不做詳細分析,后續會進行詳細分析如何消除這個警告

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • STM32
    +關注

    關注

    2272

    文章

    10923

    瀏覽量

    357544
  • HAL
    HAL
    +關注

    關注

    2

    文章

    71

    瀏覽量

    12673
  • Keil MDK
    +關注

    關注

    0

    文章

    60

    瀏覽量

    4421
收藏 人收藏

    評論

    相關推薦

    手把手帶你創建HAL版本MDK工程模板

    如何快速開發 STM32 項目?我們總不能每次開發一個項目就搭建一次工程這樣效率太低了。
    的頭像 發表于 11-20 10:31 ?1042次閱讀
    手把手帶你創建<b class='flag-5'>HAL</b>版本MDK<b class='flag-5'>工程</b>模板

    轉:工程模板(HAL庫移植)

    com/s/1jIvrqlC(硬石YS-F1Pro開發板HAL庫例程持續更新\1. 軟件設計之基本裸機例程(HAL庫版本)\YSF1_HAL-001. 工程模板(
    發表于 07-12 11:58

    【阿波羅STM32F767試用體驗】第九篇?搭建eclipse的開發環境并完成led測試

    幾張記錄下吧,都是基本的安裝軟件,難度應該不大.重要的是在創建工程之后,我們需要作一些函數上的修改.首先創建一個基于stm32f7x系列的空工程然后,選擇或者好像都可以。但是我嘗試選擇編譯的程序無法運行
    發表于 05-06 15:29

    請問HAL_UART_Receive_DMA 和 HAL_UART_Transmit_DMA怎么用

    HAL_UART_Receive_DMA HAL_UART_Transmit_DMA通過UART接受數據,難道要寫一個 HAL_UART_Transmit_DMA 不停的輪詢嗎? 除了這樣
    發表于 11-16 08:43

    如何在基于HAL工程添加RTX

    HAL的部分功能實現(例如超時計數)借助于STM32F7XX_IT.C中的SYSTICK_HANDLER,而往工程中添加RTX以后要覆蓋STM32F7XX_IT.C中的SYSTICK_HANDLER,因此,如何才能“優雅“的處理這個沖突呢?當前的
    發表于 03-27 19:15

    STM32工程搭建串口配置

    目錄前景提要STM32工程搭建串口配置100us定時器FDCAN配置Bus-Off處理新消息接收處理發送處理使用Xavier配合測試一下完整工程下載關于用作Classic CAN微信公眾號前景提要
    發表于 08-10 06:48

    基于HAL STM32的ROSSERIAL通訊

    兩年前入門ROS用了RIKI的底盤套件,后來19年自己搭建底盤做比賽和項目,因為懶用來HAL,然后參考了CSDN一些其他大佬的移植使用,后來發現不穩定,效果一般。自己寫了簡單的接收發送協議。后來今年
    發表于 08-20 07:46

    使用HAL庫新建STM32工程

    一、問題描述使用 HAL 庫新建 STM32 工程后,使用 vsCode 打開工程文件夾,會提示找不到頭文件,以及比變量沒有定義,如 uint32_t 不是一個有效類型等錯誤提示。如下圖所示:二
    發表于 08-23 07:38

    創建基于HAL庫的STM32工程項目

    工程創建和繁瑣的外設配置。但是對于初學者要懂得手動創建一個完整的工程,有利于加深對工程目錄結構和各類驅動文件的理解,本文將帶領讀者動手創建基于HAL庫的STM32
    發表于 08-23 09:27

    使用CubeMX快速搭建FREERTOS的方法

    如何使用STM32快速搭建FREERTOS小編之前一直使用正點原子家的產品, 最近準備學習學習TOUCHGFX,要用到HAL+RTOS,原子家的使用起來不方便。于是琢磨著使用STM32CUBEMX
    發表于 02-09 06:05

    搭建基于HAL庫平臺的方法分享

    STM32CubeMX的安裝一、Java運行環境的安裝二、下載STM32CubeMX三、安裝stm32cubeMX軟件四、利用stm32cubeMX生成一個Keil-MDK工程一、Java運行環境
    發表于 02-28 12:45

    應該只使用HAL_GPIO_ReadPin來讀取值嗎?

    我將其中一個 GPIO 設置為模擬模式,我想通過使用 HAL 庫讀取它的值。我應該只使用 HAL_GPIO_ReadPin 來讀取值嗎?謝謝你。
    發表于 12-08 07:46

    STM32 HAL 庫延時函數 HAL_Delay 解析

    HAL 庫有提供延時函數,只不過它只能實現簡單的毫秒級別延時,沒有實現 us 級別延時。下面我們列出HAL 庫實現延時相關的函數。首先是功能配置函數://調用 HAL
    發表于 01-17 09:48 ?8次下載
    STM32 <b class='flag-5'>HAL</b> 庫延時函數 <b class='flag-5'>HAL</b>_Delay 解析

    HAL庫無法實現UART的DMA傳輸真是這樣嗎?

    使用STM32CubeMx進行圖形化配置,并生成基于HAL庫的初始代碼,要實現UART收發功能的DMA傳輸的話,除了安排好的收發緩沖內存外,再就只需調用下面兩個HAL庫的API函數即可進行功能驗證。
    的頭像 發表于 01-08 11:16 ?2931次閱讀

    如何快速入門HAL庫編程 HAL庫與裸機編程的比較

    如何快速入門HAL庫編程 要快速入門HAL庫編程,可以遵循以下步驟: 了解基礎知識 : 掌握C語言編程基礎,包括變量、數據類型、函數、指針等。 了解嵌入式系統的基本概念,如微控制器、中斷、外設等
    的頭像 發表于 12-02 11:39 ?450次閱讀
    太阳会百家乐现金网| 澳门百家乐赌场娱乐网规则| 威尼斯人娱乐城现金开户| 上海玩百家乐官网算不算违法| 线上百家乐| 百家乐官网论坛百科| 网络百家乐怎么作弊| 莆田棋牌游戏中心| 百家乐官网桌布无纺布| 百家乐官网娱乐网站| 米其林百家乐的玩法技巧和规则| 有百家乐官网的游戏平台| 威尼斯人娱乐城骗子| 百家乐官网的看路技巧| 现金游戏网| 基础百家乐博牌规| 澳门百家乐心理| 百家乐官网澳门百家乐官网澳门赌场| 赌球赔率| 太阳百家乐网址| 百家乐游戏打水方法| 微信百家乐官网群规则大全| 百家乐官网挂机软件| A8百家乐官网娱乐城| 大发888娱乐场下载iypu rd| 环球百家乐现金网| 百家乐官网有好的投注法吗| 江都市| 博彩现金开户| 现金网制作| 百家乐凯时娱乐平台| 百家乐噢门棋牌| 钱百家乐取胜三步曲| 百家乐游戏试玩免费| 百家乐tt娱乐城| 百家乐官网能破解| 百家乐官网平台是最好的娱乐城| 始兴县| 德州扑克教学视频| 大发888游戏是真的么| 尊龙百家乐赌场娱乐网规则|