在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

HAL工程應(yīng)該這樣搭建

朱老師物聯(lián)網(wǎng)大講堂 ? 2024-03-26 08:09 ? 次閱讀

一、為何要自己手動(dòng)搭建一個(gè)軟件工程?

(1)在Keil MDK的開(kāi)發(fā)環(huán)境下:工程師都會(huì)找一個(gè)模板,這個(gè)模板可能是在某一家開(kāi)發(fā)板廠家提供的一個(gè)例程的基礎(chǔ)上進(jìn)行修改;也可能是這個(gè)工程師通過(guò)多年的開(kāi)發(fā)經(jīng)驗(yàn)有自己的一套工程模板。

(2)第一種情況下可能占據(jù)比例會(huì)更多一些,第二種情況是有經(jīng)驗(yàn)的工程師自己通過(guò)多年的經(jīng)驗(yàn)和能力來(lái)構(gòu)建工程。個(gè)人觀點(diǎn):不管從哪看到模板,不管用誰(shuí)的模板,在自己經(jīng)驗(yàn)和能力到達(dá)一定的水平后自己創(chuàng)建一個(gè)適合自己的模板。這樣的好處就是在單片機(jī)+MDK這個(gè)開(kāi)發(fā)平臺(tái)下可以掌握全局,任意修改,整體的軟件架構(gòu)根據(jù)自己的喜好能隨意修改,優(yōu)化,做到隨心所欲。

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

二、在Keil5+STM32F429**平臺(tái)下的軟件工程搭建

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

(2)打開(kāi)文件夾,創(chuàng)建5個(gè)子文件夾

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

備注:這樣我們就把基礎(chǔ)的文件夾全部創(chuàng)建好了,這樣做的原因是什么?分層。創(chuàng)建一個(gè)軟件工程在分層的架構(gòu)下才能在后續(xù)的開(kāi)發(fā)中縷清思路,不會(huì)因增加一些功能而每次軟件架構(gòu)都在不停的變動(dòng),開(kāi)發(fā)效率降低。

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

三、打開(kāi)Keil MDK5軟件創(chuàng)建一個(gè)新工程

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

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

(2)選擇存儲(chǔ)創(chuàng)建工程的路徑,D:\Personal\Embedded\02.STM32\02.個(gè)人開(kāi)發(fā)\STM32F429xx\Example\02.MDK5+STM32F429\Project。這個(gè)是我自己創(chuàng)建的工程路徑,這個(gè)路徑的最后一級(jí)是上一步創(chuàng)建的Project文件夾,工程名叫Demo,這個(gè)名字根據(jù)自己的習(xí)慣來(lái)命名。

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

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

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

(4)出現(xiàn)如下界面,我們不做選擇,直接點(diǎn)擊Cancel,這個(gè)界面是添加一些組件,這些組件我們暫時(shí)不需要,根據(jù)自己后面的實(shí)際項(xiàng)目需求來(lái)選擇。

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

(5)創(chuàng)建完成后,出現(xiàn)如下基礎(chǔ)工程,當(dāng)然這個(gè)工程只是我們創(chuàng)建的第一步,后續(xù)還要添加很多文件來(lái)完善。

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

在Project文件夾下有我們創(chuàng)建成功的工程

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

四、在各個(gè)文件夾下添加所需文件

2614c2cc-eb05-11ee-9118-92fbcf53809c.png(1)這些文件我們?cè)谀睦锊檎??首先要在MDK安裝目錄下有自己對(duì)應(yīng)的xxx_DFP包,為什么需要這個(gè)xxx_DFP包?這個(gè)包里包含STM32F4xx系列新品的啟動(dòng)文件,配置文件,HAL庫(kù),ST官方提供的開(kāi)發(fā)板的相關(guān)Demo例程。這個(gè)包是ST官方提供的,可以在ST官網(wǎng)上下載,當(dāng)然也可以在MDK5軟件下進(jìn)行下載 。MD5軟件下載xxx_DFP包方法如下:@1.打開(kāi)MDK5軟件,將紅圈這個(gè)圖標(biāo)打開(kāi),這個(gè)圖標(biāo)的英文名是"packet installer"

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

@2.在安裝界面找到ST公司系列新品,F(xiàn)4系列處理器任意點(diǎn)擊,然后右側(cè)會(huì)有提示安裝xxx_DFP安裝包,點(diǎn)擊install,安裝。這個(gè)過(guò)程比較漫長(zhǎng)。因?yàn)檫@個(gè)包在ST的境外服務(wù)器放置,所以下載過(guò)程中會(huì)有不穩(wěn)定斷開(kāi)情況,如果斷開(kāi)后點(diǎn)擊關(guān)閉重復(fù)上述操作,會(huì)在上次的斷點(diǎn)處開(kāi)始下載,不影響包的質(zhì)量,下圖這個(gè)提示是我已經(jīng)安裝過(guò)了,有updata,但updata是灰色的,表示沒(méi)有包的更新

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

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

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

(2)在創(chuàng)建的工程的Libraries文件夾下再創(chuàng)建3個(gè)文件夾

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

(3)在Startup下放置一些啟動(dòng)文件@1.第一個(gè)文件是:startup_stm32f429xx.s文件,將這個(gè)文件拷貝到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.這個(gè)文件下最終文件如下

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

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

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

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

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

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

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

(6)在App文件夾下創(chuàng)建一個(gè)文件夾,在這個(gè)文件夾下放置一些,用戶需要配置+中斷函數(shù)文件+HAL庫(kù)底層硬件驅(qū)動(dòng)接口文件等

@1.創(chuàng)建SysLibraryConfig文件

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

@2.在這個(gè)SysLibraryConfig文件夾下添加相關(guān)文件:system_stm32f4xx.h

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

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

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

@4.將stm32f4xx_hal_msp.c,stm32f4xx_it.h,system_stm32f4xx.h 3個(gè)文件拷貝到SysLibraryConfig文件夾下,將main.c文件拷貝當(dāng)App文件夾下

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

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

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

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

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

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

五、在MDK工程下添加文件

(1)點(diǎn)擊圖標(biāo)進(jìn)入配置界面

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

(2)在配置界面下創(chuàng)建這幾個(gè)文件路徑

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

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

@2.根據(jù)@1的步驟在Libraries組下點(diǎn)擊Add Files,將Libraries/HALlib/Src路徑下的.c文件全部添加進(jìn)去,這個(gè)就是HAL庫(kù)文件,后續(xù)的外設(shè)開(kāi)發(fā)API接口幾乎都是調(diào)用這個(gè)文件夾下的

@3.和@2操作類(lèi)似,SysF4xxInc組下將Libraries/HALlib/SysF4xxInc的全部文件添加進(jìn)去

@4.在App組下main.c添加進(jìn)去

@5.在SysLibraryConfig組下將App/SysLibraryConfig文件添加進(jìn)去,這個(gè)可以只添加.c文件

@6.將ReadMe組下添加/ReadMe/ReadMe.txt添加進(jìn)去

@7.到了這一步后所有的文件都添加進(jìn)去了,接下來(lái)需要做的是添加文件路徑了

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

六、在MDK下添加路路徑

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

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

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

(3)在define那一欄需要添加全局宏定義,USE_HAL_DRIVER,STM32F429xx,否則編譯時(shí)會(huì)報(bào)錯(cuò)

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

Output選首先勾選Create HEX File,表示編譯生成可執(zhí)行文件,點(diǎn)擊Select Dolder For Object,在Projecet文件下 點(diǎn)擊“新建文件夾”圖標(biāo),創(chuàng)建Output文件,這樣輸出文件就在Output文件夾里面了

(5)到了這一步,離成功差90%了,千萬(wàn)別放棄,接線來(lái)就是進(jìn)行對(duì)工程編譯,工程如何編譯就不詳細(xì)說(shuō)了,下面只呈現(xiàn)結(jié)果

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

找到后點(diǎn)擊紅圈圈里的圖標(biāo),這樣整個(gè)工程里就不包含stm32f4xx_hal_msp_template.c文件了

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

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

這個(gè)警告的意思是__packed在這個(gè)地方無(wú)法用到,這個(gè)可能是一些參數(shù)配置的問(wèn)題,此處我們不做詳細(xì)分析,后續(xù)會(huì)進(jìn)行詳細(xì)分析如何消除這個(gè)警告

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10915

    瀏覽量

    356742
  • HAL
    HAL
    +關(guān)注

    關(guān)注

    2

    文章

    71

    瀏覽量

    12647
  • Keil MDK
    +關(guān)注

    關(guān)注

    0

    文章

    60

    瀏覽量

    4415
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    手把手帶你創(chuàng)建HAL版本MDK工程模板

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

    轉(zhuǎn):工程模板(HAL庫(kù)移植)

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

    【阿波羅STM32F767試用體驗(yàn)】第九篇?搭建eclipse的開(kāi)發(fā)環(huán)境并完成led測(cè)試

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

    請(qǐng)問(wèn)HAL_UART_Receive_DMA 和 HAL_UART_Transmit_DMA怎么用

    HAL_UART_Receive_DMA HAL_UART_Transmit_DMA通過(guò)UART接受數(shù)據(jù),難道要寫(xiě)一個(gè) HAL_UART_Transmit_DMA 不停的輪詢嗎? 除了這樣
    發(fā)表于 11-16 08:43

    如何在基于HAL工程添加RTX

    HAL的部分功能實(shí)現(xiàn)(例如超時(shí)計(jì)數(shù))借助于STM32F7XX_IT.C中的SYSTICK_HANDLER,而往工程中添加RTX以后要覆蓋STM32F7XX_IT.C中的SYSTICK_HANDLER,因此,如何才能“優(yōu)雅“的處理這個(gè)沖突呢?當(dāng)前的
    發(fā)表于 03-27 19:15

    STM32工程搭建串口配置

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

    基于HAL STM32的ROSSERIAL通訊

    兩年前入門(mén)ROS用了RIKI的底盤(pán)套件,后來(lái)19年自己搭建底盤(pán)做比賽和項(xiàng)目,因?yàn)閼杏脕?lái)HAL,然后參考了CSDN一些其他大佬的移植使用,后來(lái)發(fā)現(xiàn)不穩(wěn)定,效果一般。自己寫(xiě)了簡(jiǎn)單的接收發(fā)送協(xié)議。后來(lái)今年
    發(fā)表于 08-20 07:46

    使用HAL庫(kù)新建STM32工程

    一、問(wèn)題描述使用 HAL 庫(kù)新建 STM32 工程后,使用 vsCode 打開(kāi)工程文件夾,會(huì)提示找不到頭文件,以及比變量沒(méi)有定義,如 uint32_t 不是一個(gè)有效類(lèi)型等錯(cuò)誤提示。如下圖所示:二
    發(fā)表于 08-23 07:38

    創(chuàng)建基于HAL庫(kù)的STM32工程項(xiàng)目

    工程創(chuàng)建和繁瑣的外設(shè)配置。但是對(duì)于初學(xué)者要懂得手動(dòng)創(chuàng)建一個(gè)完整的工程,有利于加深對(duì)工程目錄結(jié)構(gòu)和各類(lèi)驅(qū)動(dòng)文件的理解,本文將帶領(lǐng)讀者動(dòng)手創(chuàng)建基于HAL庫(kù)的STM32
    發(fā)表于 08-23 09:27

    使用CubeMX快速搭建FREERTOS的方法

    如何使用STM32快速搭建FREERTOS小編之前一直使用正點(diǎn)原子家的產(chǎn)品, 最近準(zhǔn)備學(xué)習(xí)學(xué)習(xí)TOUCHGFX,要用到HAL+RTOS,原子家的使用起來(lái)不方便。于是琢磨著使用STM32CUBEMX
    發(fā)表于 02-09 06:05

    搭建基于HAL庫(kù)平臺(tái)的方法分享

    STM32CubeMX的安裝一、Java運(yùn)行環(huán)境的安裝二、下載STM32CubeMX三、安裝stm32cubeMX軟件四、利用stm32cubeMX生成一個(gè)Keil-MDK工程一、Java運(yùn)行環(huán)境
    發(fā)表于 02-28 12:45

    應(yīng)該只使用HAL_GPIO_ReadPin來(lái)讀取值嗎?

    我將其中一個(gè) GPIO 設(shè)置為模擬模式,我想通過(guò)使用 HAL 庫(kù)讀取它的值。我應(yīng)該只使用 HAL_GPIO_ReadPin 來(lái)讀取值嗎?謝謝你。
    發(fā)表于 12-08 07:46

    STM32 HAL 庫(kù)延時(shí)函數(shù) HAL_Delay 解析

    HAL 庫(kù)有提供延時(shí)函數(shù),只不過(guò)它只能實(shí)現(xiàn)簡(jiǎn)單的毫秒級(jí)別延時(shí),沒(méi)有實(shí)現(xiàn) us 級(jí)別延時(shí)。下面我們列出HAL 庫(kù)實(shí)現(xiàn)延時(shí)相關(guān)的函數(shù)。首先是功能配置函數(shù)://調(diào)用 HAL
    發(fā)表于 01-17 09:48 ?8次下載
    STM32 <b class='flag-5'>HAL</b> 庫(kù)延時(shí)函數(shù) <b class='flag-5'>HAL</b>_Delay 解析

    HAL庫(kù)無(wú)法實(shí)現(xiàn)UART的DMA傳輸真是這樣嗎?

    使用STM32CubeMx進(jìn)行圖形化配置,并生成基于HAL庫(kù)的初始代碼,要實(shí)現(xiàn)UART收發(fā)功能的DMA傳輸?shù)脑?,除了安排好的收發(fā)緩沖內(nèi)存外,再就只需調(diào)用下面兩個(gè)HAL庫(kù)的API函數(shù)即可進(jìn)行功能驗(yàn)證。
    的頭像 發(fā)表于 01-08 11:16 ?2871次閱讀

    如何快速入門(mén)HAL庫(kù)編程 HAL庫(kù)與裸機(jī)編程的比較

    如何快速入門(mén)HAL庫(kù)編程 要快速入門(mén)HAL庫(kù)編程,可以遵循以下步驟: 了解基礎(chǔ)知識(shí) : 掌握C語(yǔ)言編程基礎(chǔ),包括變量、數(shù)據(jù)類(lèi)型、函數(shù)、指針等。 了解嵌入式系統(tǒng)的基本概念,如微控制器、中斷、外設(shè)等
    的頭像 發(fā)表于 12-02 11:39 ?371次閱讀
    主站蜘蛛池模板: 久久99热精品| 亚洲一级毛片免费看| 婷婷综合网站| 天天干天天干天天色| 色视频日本| 国产精品福利午夜h视频| 色视频网站在线观看| 又色又污又爽又黄的网站| 亚洲一区日韩一区欧美一区a| 亚洲男人天堂2021| 国产精品高清久久久久久久| 国产三级日本三级韩国三级在线观看| 亚洲干综合| 亚洲国产人成在线观看| 色欲香天天天综合网站| 女人扒开腿让男人桶到爽| 黄色网址大全免费| 96一级毛片| 免费公开在线视频| 天堂网在线新版www| 九色在线观看视频| 久久人人干| 欧美性猛交xxxx免费| 老师喂我吃她的奶水脱她胸罩 | 激情玖玖| 亚洲最新黄色网址| 国产成人精品一区二区三区| 狠狠干狠狠干| 免费91视频| 在线成人亚洲| 日韩精品一级毛片| 国产三级中文字幕| 天堂网在线www资源网| 我不卡老子影院午夜伦我不卡四虎| 欧美色亚洲图| 日韩成人黄色| 白丝丝袜高跟国产在线视频| 老色歌uuu26| 免费在线不卡视频| 一级特黄特黄的大片免费| 日本在线视频精品|