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

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

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

STM32CubeMX生成的代碼,是怎樣的HAL架構(gòu)?

撞上電子 ? 2025-01-01 21:01 ? 次閱讀

需要注意,CubeMX只是一個(gè)初始化工具,它只是幫你完成了HAL庫(kù)外設(shè)和時(shí)鐘的初始化,具體程序的編寫還需要查閱HAL庫(kù)的說(shuō)明,使用相關(guān)函數(shù)實(shí)現(xiàn)你想實(shí)現(xiàn)的功能。

CubeMX生成的代碼包含了豐富的注釋,為用戶規(guī)范編程提供了參考,如果后期還需要使用CubeMX更改時(shí)鐘或是添加新的外設(shè),用戶代碼必須寫在相應(yīng)注釋BEGIN和END之間,否則再次使用CubeMX生成代碼時(shí),未在指定位置的代碼會(huì)被刪除!

790d7c76-c840-11ef-9434-92fbcf53809c.png

CubeMX可以幫助用戶初始化外設(shè),所做的操作在MX_XX_Init()中,但如果用戶在代碼中自行更改了MX_XX_Init()的內(nèi)容,再次打開 CubeMX,圖形化界面并不會(huì)同步用戶在代碼中對(duì)初始化部分所做的更改!

綜上所述,如果用戶希望在整個(gè)項(xiàng)目開發(fā)過程中一直使用CubeMX進(jìn)行初始化和對(duì)外設(shè)參數(shù)進(jìn)行修改,一是需要嚴(yán)格按照注釋的位置編寫代碼,二是不要在代碼層面改動(dòng)MX_XX_Init()的內(nèi)容,對(duì)外設(shè)初始化參數(shù)的修改要在CubeMX中進(jìn)行。

如果用戶只是希望使用CubeMX生成一個(gè)工程模板,后期新加外設(shè)或修改時(shí)鐘不再使用CubeMX工具,而是純使用代碼來(lái)實(shí)現(xiàn),則不需考慮代碼位置和CubeMX的初始化更改。

79261204-c840-11ef-9434-92fbcf53809c.png


Application/MDK-ARM文件夾:

此文件夾下存放在.s啟動(dòng)文件,用戶一般不需要進(jìn)行更改。

Drivers/CMSIS文件夾:

存放CMSIS接口文件,用戶一般無(wú)需關(guān)心。

Application/User/Core文件夾:

main.c里面有main函數(shù),用戶程序從此處開始執(zhí)行;

xx.c關(guān)于外設(shè)的初始化函數(shù)MX_XX_Init()、外設(shè)結(jié)構(gòu)體等就在此處被定義;

stm32xx_it.c 中斷服務(wù)函數(shù)在此處被定義(其實(shí)也支持在別處復(fù)定義),用戶可以修改中斷服務(wù)函數(shù)來(lái)實(shí)現(xiàn)用戶需要的功能;

stm32xx_hal_msp.c 與初始化相關(guān),如果用CubeMX進(jìn)行初始化,一般也無(wú)需關(guān)心此文件。

Drivers/STM32xx_HAL_Driver文件夾:

HAL庫(kù)文件夾,里面存放這各個(gè)外設(shè)相關(guān)函數(shù),我們調(diào)用的函數(shù),也大多來(lái)自此處。

更重要的是,這里面也包含HAL庫(kù)相關(guān)外設(shè)的使用說(shuō)明書,以stm32f1xx_hal_gpio_ex.c為例,在庫(kù)函數(shù)的前面會(huì)有大篇幅的介紹,介紹如何使用這個(gè)外設(shè),實(shí)現(xiàn)什么功能需要調(diào)用什么函數(shù),非常貼心。

793e11ec-c840-11ef-9434-92fbcf53809c.png

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

    關(guān)注

    2270

    文章

    10905

    瀏覽量

    356447
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4796

    瀏覽量

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

    關(guān)注

    2

    文章

    71

    瀏覽量

    12633
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32CubeMx入門教程(4):PWM應(yīng)用

    導(dǎo)語(yǔ)“使用STM32CubeMx配置定時(shí)器輸出PWM波,生成初始化代碼?!?/div>
    發(fā)表于 07-11 15:23 ?2495次閱讀
    <b class='flag-5'>STM32CubeMx</b>入門教程(4):PWM應(yīng)用

    STM32F030K6xx HAL庫(kù)及STM32CubeMX生成代碼

    **STM32F030K6xx HAL庫(kù) STM32CubeMX生成代碼中IWDG喂狗復(fù)位**最近在編寫一個(gè)項(xiàng)目時(shí)用
    發(fā)表于 08-02 10:46

    STM32CubeMXHAL庫(kù)進(jìn)行開發(fā)

    STM32CubeMXHAL庫(kù)學(xué)習(xí)--基本定時(shí)器定時(shí)中斷背景STM32CubeMX生成初始化代碼在MDK-ARM里編輯
    發(fā)表于 08-11 06:59

    STM32CubeMx代碼生成問題求解

    STM32CubeMx生成如下代碼。HAL_GPIO_EXTI_IRQHandler (GPIO_OUTPUT_PA0_Pin);但我希望它生成
    發(fā)表于 12-13 06:36

    使用STM32CubeMx版本6.5.0生成代碼缺少HAL_RTCEx_SetWakeUpTimer_IT ()的原因?

    使用 STM32CubeMx 版本 6.5.0 生成代碼缺少 MX_RTC_Init () 函數(shù)中應(yīng)包含的 HAL_RTCEx_SetWakeUpTimer_IT ()。
    發(fā)表于 02-02 07:38

    STM32CubeMX 配置STM32F407 實(shí)現(xiàn)HAL庫(kù)延時(shí)微妙方案

    STM32CubeMX 配置STM32F407 實(shí)現(xiàn)HAL庫(kù)延時(shí)微妙方案
    發(fā)表于 11-24 20:51 ?20次下載
    <b class='flag-5'>STM32CubeMX</b> 配置<b class='flag-5'>STM32</b>F407 實(shí)現(xiàn)<b class='flag-5'>HAL</b>庫(kù)延時(shí)微妙方案

    STM32CubeMX生成代碼在SW4STM32下移植STemWin(CLion+CubeMX

    STM32CubeMX生成代碼在SW4STM32下移植STemWin(CLion+CubeMX)文章目錄
    發(fā)表于 12-04 14:36 ?12次下載
    <b class='flag-5'>STM32CubeMX</b><b class='flag-5'>生成</b><b class='flag-5'>代碼</b>在SW4<b class='flag-5'>STM32</b>下移植STemWin(CLion+<b class='flag-5'>CubeMX</b>)

    STM32cubemx教程及STM32入門(一)

    生成C 初始化代碼,可以大大減輕開發(fā)工作,時(shí)間和費(fèi)用,提高開發(fā)效率。STM32CubeMX幾乎覆蓋了STM32 全系列芯片。在CubeMX
    發(fā)表于 12-07 17:36 ?13次下載
    <b class='flag-5'>STM32cubemx</b>教程及<b class='flag-5'>STM32</b>入門(一)

    STM32實(shí)戰(zhàn) 2 | STM32CubeMXHAL庫(kù)點(diǎn)亮LED

    STM32實(shí)戰(zhàn) 2 | STM32CubeMXHAL庫(kù)點(diǎn)亮LED
    發(fā)表于 12-08 12:36 ?34次下載
    <b class='flag-5'>STM32</b>實(shí)戰(zhàn) 2 | <b class='flag-5'>STM32CubeMX</b>及<b class='flag-5'>HAL</b>庫(kù)點(diǎn)亮LED

    STM32CubeMX基于HAL庫(kù)實(shí)現(xiàn)簡(jiǎn)單串口通信

    STM32CubeMX基于HAL庫(kù)實(shí)現(xiàn)簡(jiǎn)單串口通信板子:STM32F103C8編譯工具:Keil+STM32CubeMX燒錄工具:FlyMcu串口調(diào)試程序:XCOM實(shí)驗(yàn)要求:1)設(shè)置波
    發(fā)表于 12-08 12:36 ?20次下載
    <b class='flag-5'>STM32CubeMX</b>基于<b class='flag-5'>HAL</b>庫(kù)實(shí)現(xiàn)簡(jiǎn)單串口通信

    STM32CubeMX | STM32基于HAL實(shí)現(xiàn)USB模擬U盤

    STM32CubeMX | STM32基于HAL實(shí)現(xiàn)USB模擬U盤目錄STM32CubeMX | STM32基于
    發(fā)表于 12-28 20:04 ?40次下載
    <b class='flag-5'>STM32CubeMX</b> | <b class='flag-5'>STM32</b>基于<b class='flag-5'>HAL</b>實(shí)現(xiàn)USB模擬U盤

    STM32CubeMXHAL庫(kù)學(xué)習(xí)--ADC與USART的簡(jiǎn)單練習(xí)

    STM32CubeMXHAL庫(kù)學(xué)習(xí)--ADC與USART的簡(jiǎn)單練習(xí)前言STM32CubeMX生成初始化代碼在MDK-ARM里編輯
    發(fā)表于 01-12 20:27 ?13次下載
    <b class='flag-5'>STM32CubeMX</b>與<b class='flag-5'>HAL</b>庫(kù)學(xué)習(xí)--ADC與USART的簡(jiǎn)單練習(xí)

    STM32CubeMX用于STM32配置并初始化C代碼生成

    STM32CubeMX用于STM32配置 并初始化C代碼生成.STM32CubeMXSTM32
    發(fā)表于 02-14 11:00 ?5次下載

    使用STM32CubeMX生成初始化代碼

    我使用STM32CubeMX生成初始化代碼,使用LL庫(kù),這里只介紹跟i2c相關(guān)的部分,其他必要的初始化需要自己完成。芯片使用stm32f042。本文的
    的頭像 發(fā)表于 03-22 15:26 ?3030次閱讀

    STM32CubeMX的配置和C代碼生成

    電子發(fā)燒友網(wǎng)站提供《STM32CubeMX的配置和C代碼生成.pdf》資料免費(fèi)下載
    發(fā)表于 09-20 09:53 ?8次下載
    <b class='flag-5'>STM32CubeMX</b>的配置和C<b class='flag-5'>代碼</b>的<b class='flag-5'>生成</b>