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

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

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

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

STM32Cube CubeIDE工程里的程序結(jié)構(gòu)

冬至子 ? 來源:聊點(diǎn)嵌入式 ? 作者:聊點(diǎn)嵌入式 ? 2023-11-06 14:54 ? 次閱讀

今天,我們就來分析一下上次生成的CubeIDE點(diǎn)燈工程的源碼,看看跟我們拿來“逆向”的開發(fā)板例程源碼有什么異同。

1. 工程視圖下源碼文件夾

圖片

上圖中,Binaries和Includes文件夾我們不用去理它們,硬盤工程目錄下并沒有這兩個(gè)文件夾,是在編譯后產(chǎn)生的。另外3個(gè)文件夾是工程目錄里實(shí)際上有的,其中Debug文件夾是在Debug工程配置下編譯生成的,如果選擇Release工程配置并編譯,則會(huì)生成一個(gè)Release文件夾。

下面主要講一下Core和Drivers文件夾以及工程根目錄下的幾個(gè)文件。

其中Core文件夾是用戶代碼的存放地,包括源文件和頭文件。當(dāng)然,你想重新建個(gè)文件夾放自己的代碼也是沒問題的。Core文件夾全打開后見下圖。頭文件和源文件是分開存放的,這跟硬盤上工程目錄是一致的。

Keil MDK就不一樣了,不會(huì)根據(jù)硬盤上工程目錄下的文件位置去自動(dòng)生成工程目錄,需要手動(dòng)去添加,哪怕你后期往工程目錄里添加文件,也照樣要在Keil里添加才出現(xiàn)在工程里。Eclipse就智能多了,自動(dòng)識別硬盤上工程目錄里的文件,自動(dòng)添加。

圖片

上圖中Inc目錄里前兩個(gè)頭文件就不說了,stm32f7xx_hal_conf.h的作用是要不要包含各種外設(shè)的頭文件,如果你手動(dòng)添加了一個(gè)外設(shè),就算把HAL庫里的外設(shè)驅(qū)動(dòng)加進(jìn)來了,也要在這個(gè)頭文件里打開這個(gè)外設(shè)功能。

當(dāng)然,也可以直接在用戶代碼里包含新添加的外設(shè)頭文件,但是不推薦這樣做。另外要注冊自己的中斷回調(diào)函數(shù),也在這個(gè)頭文件里開啟相應(yīng)的開關(guān),這個(gè)回調(diào)函數(shù)的事情以后也可以說一說。

stm32f7xx_it.h里放的都是中斷服務(wù)函數(shù)的申明,包括異常和中斷。

源文件里stm32f7xx_hal_msp.c里放的是與MCU相關(guān)的初始化代碼,msp也即MCU Specific Package,一般外設(shè)的msp代碼都放在外設(shè)對應(yīng)的源文件中,stm32f7xx_hal_msp.c基本上沒什么東西。在CubeMX生成代碼時(shí)也可以選擇把外設(shè)的msp代碼都放在stm32f7xx_hal_msp.c中。

stm32f7xx_it.c里放的都是中斷服務(wù)函數(shù),建議用戶中斷都放在這里,然后在相應(yīng)的中斷函數(shù)里調(diào)用自己寫的中斷服務(wù)函數(shù)或是HAL庫提供的中斷服務(wù)函數(shù)。

syscalls.c里是系統(tǒng)調(diào)用的一些函數(shù),可以改寫。例如想用printf函數(shù)通過串口發(fā)送消息,則可以把串口發(fā)送代碼添加進(jìn)_write()函數(shù)里。

sysmem.c里有一個(gè)用來分配系統(tǒng)堆空間的函數(shù)。我們設(shè)置工程的時(shí)候只需要確定堆的大小即可,默認(rèn)堆大小是512字節(jié),如果在用戶代碼中不用malloc分配內(nèi)存就不用改,完全夠用。

系統(tǒng)內(nèi)存在運(yùn)行時(shí),內(nèi)存空間是按下圖這樣分配的。其中newlib heap那一段就是堆空間。未使用的RAM空間在bbs段與堆之間。

圖片

system_stm32f7xx.c里包含系統(tǒng)初始化,時(shí)鐘初始化函數(shù)。其中系統(tǒng)初始化函數(shù)是系統(tǒng)啟動(dòng)后,進(jìn)入main函數(shù)之前執(zhí)行的。

Startup文件夾下只有一個(gè)MCU對應(yīng)的啟動(dòng)文件,以后可以具體分析一下這個(gè)啟動(dòng)文件,看一看系統(tǒng)啟動(dòng)后要執(zhí)行哪些操作,然后才進(jìn)入main函數(shù)。

Drivers文件夾展開后如下圖。

圖片

基本上沒什么好說的,一個(gè)是ARM提供的CMSIS標(biāo)準(zhǔn)軟件接口,另一個(gè)是必要的HAL庫函數(shù)。

2. 工程根目錄下的文件分析

圖片

上圖中,第一個(gè)ioc文件不必多說,CubeMX生成的文件,后續(xù)可以改,重新生成代碼。第二個(gè)launch文件是我們上次配置工程運(yùn)行選項(xiàng)時(shí)生成的,要下載代碼或調(diào)試代碼都得有這個(gè)文件。如果用的是Release工程配置,則會(huì)生成一個(gè)Release.launch。

后邊兩個(gè)文件是鏈接文件,gcc里需要鏈接文件告訴編譯器,各段要分別鏈接到什么地址上。其中FLASH.ld是我們常用的,生成的代碼要下載到FLASH中運(yùn)行。RAM.ld會(huì)把代碼鏈接進(jìn)RAM,調(diào)試的時(shí)候可以用,斷電后內(nèi)容就消失了。

更改鏈接文件的方法如下:

圖片

好了,今天就講這么多,基本上CubeIDE工程里所有源文件的作用都講到了,具體怎么實(shí)現(xiàn)的還需要自己去看源代碼。接下來有時(shí)間講講啟動(dòng)代碼。

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

    關(guān)注

    8

    文章

    1369

    瀏覽量

    114805
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10912

    瀏覽量

    356692
  • 回調(diào)函數(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    87

    瀏覽量

    11594
  • STM32F7
    +關(guān)注

    關(guān)注

    1

    文章

    48

    瀏覽量

    8994
  • HAL庫
    +關(guān)注

    關(guān)注

    1

    文章

    121

    瀏覽量

    6336
收藏 人收藏

    評論

    相關(guān)推薦

    如何使用STM32CubeIDE創(chuàng)建一個(gè)基于STM32Cube庫的項(xiàng)目?

    如何使用STM32CubeIDE創(chuàng)建一個(gè)基于STM32Cube庫的項(xiàng)目?
    發(fā)表于 11-26 06:01

    如何安裝STM32Cube套件?

    該套件似乎由 STM32CubeMX、STM32CubeIDESTM32CubeProgrammer、STM32CubeMonitor、STM32
    發(fā)表于 01-16 06:09

    STM32Cube知識大全

    本文檔內(nèi)容包含了STM32Cube知識大全,不同知識點(diǎn)的圖解,希望對大家有所幫助。
    發(fā)表于 09-12 19:18 ?26次下載
    <b class='flag-5'>STM32Cube</b>知識大全

    STM32Cube學(xué)習(xí)之一:點(diǎn)燈

    STM32Cube學(xué)習(xí)之一:點(diǎn)燈
    發(fā)表于 12-12 15:30 ?20次下載

    介紹STM32Cube的特點(diǎn)及應(yīng)用

    2014年STM32 Roadshow:STM32Cube簡介
    的頭像 發(fā)表于 07-05 00:26 ?5142次閱讀

    使用STM32Cube輕松開發(fā)STM32

    STM32CubeSTM32開發(fā)更輕松
    的頭像 發(fā)表于 07-03 04:30 ?5702次閱讀

    STM32Cube到底包含哪些工具 ?

    STM32Cube到底包含哪些工具?
    的頭像 發(fā)表于 03-04 10:16 ?8512次閱讀

    STM32Cube介紹

    STM32Cube介紹
    發(fā)表于 12-08 15:51 ?19次下載
    <b class='flag-5'>STM32Cube</b>介紹

    精雕細(xì)琢見真章《STM32Cube高效開發(fā)教程》

    CubeMX和STM32CubeIDE作為開發(fā)軟件,系統(tǒng)性地介紹STM32的HAL庫開發(fā)技術(shù)的書。《STM32Cube高效開發(fā)教程》分為《基礎(chǔ)篇》和《高級篇》兩本,《高級篇》大約在10月份才能正式印刷出來。總結(jié)一下,本書具有
    發(fā)表于 12-31 19:28 ?341次下載
    精雕細(xì)琢見真章《<b class='flag-5'>STM32Cube</b>高效開發(fā)教程》

    DB3215 基于STM32 Amazon STM32Cube數(shù)據(jù)手冊

    DB3215 基于STM32 Amazon STM32Cube數(shù)據(jù)手冊
    發(fā)表于 11-23 08:27 ?1次下載
    DB3215 基于<b class='flag-5'>STM32</b> Amazon <b class='flag-5'>STM32Cube</b>數(shù)據(jù)手冊

    STM32Cube培訓(xùn)指南

    電子發(fā)燒友網(wǎng)站提供《STM32Cube培訓(xùn)指南.pdf》資料免費(fèi)下載
    發(fā)表于 07-31 15:02 ?2次下載
    <b class='flag-5'>STM32Cube</b>培訓(xùn)指南

    STM32Cube在線培訓(xùn)

    電子發(fā)燒友網(wǎng)站提供《STM32Cube在線培訓(xùn).pdf》資料免費(fèi)下載
    發(fā)表于 08-01 14:23 ?3次下載
    <b class='flag-5'>STM32Cube</b>在線培訓(xùn)

    始使用X-CUBE-SBSFU STM32Cube擴(kuò)展包

    電子發(fā)燒友網(wǎng)站提供《始使用X-CUBE-SBSFU STM32Cube擴(kuò)展包.pdf》資料免費(fèi)下載
    發(fā)表于 08-01 09:22 ?0次下載
    始使用X-<b class='flag-5'>CUBE</b>-SBSFU <b class='flag-5'>STM32Cube</b>擴(kuò)展包

    STM32標(biāo)準(zhǔn)外設(shè)庫遷移至STM32Cube底層庫

    本應(yīng)用筆記介紹了從現(xiàn)有使用STM32 SPL開發(fā)的基于STM32的應(yīng)用程序遷移到使用STM32Cube LL驅(qū)動(dòng)程序的任何其他類型的微控制器
    發(fā)表于 08-31 10:25 ?0次下載

    STM32Cube LL庫的巧妙之處

    STM32Cube LL庫的巧妙之處
    的頭像 發(fā)表于 09-27 16:26 ?1434次閱讀
    <b class='flag-5'>STM32Cube</b> LL庫的巧妙之處
    主站蜘蛛池模板: 美女黄频| 亚洲啪啪免费视频| 日日噜噜夜夜狠狠久久丁香| 亚洲jjzzjjzz在线观看| 亚洲性视频网站| 超级乱淫视频播放日韩| 天天干天天曰天天操| aaaa级日本片免费视频| 在线观看精品国产入口| 天天做天天摸天天爽天天爱| 国产高清免费| 国产亚洲精品在天天在线麻豆| 国产美女视频一区二区二三区| 99青草青草久热精品视频| 天天爽天天爽| 国产又大又黄又粗又爽| 欧美性猛交xxx嘿人猛交| 2018国产精品| jlzzjlzz亚洲日本| 国产精品午夜高清在线观看| 日日干视频| 天天干天天操天天爽| 亚洲综合激情| 久久天天| 精品久久久久久久免费加勒比| 天天操天天操天天射| 国产香蕉久久精品综合网| 一区二区三区中文| 欧美高清成人| 手机在线亚洲| 99久久国产综合精品国| 综合色婷婷| 色多多网站在线观看| 好吊操免费视频| 天天干天天操天天透| 色射啪| 亚洲综合区图片小说区| 亚洲欧美7777| 色播五月激情| 第四色播日韩第一页| 一级特黄aaa大片免费看|