• <tfoot id="ukgsw"><input id="ukgsw"></input></tfoot>
    
    • 久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
      分享

      【STM32】STM32標(biāo)準(zhǔn)庫與HAL庫對照學(xué)習(xí)教程二--庫函數(shù)模板創(chuàng)建

       大傻子的文淵閣 2024-01-16 發(fā)布于浙江

      STM32全部教程【STM32】標(biāo)準(zhǔn)庫與HAL庫對照學(xué)習(xí)系列教程大全

      一、前言

      本章內(nèi)容是使用庫函數(shù)開發(fā)STM32的前提,以STM32F103zet6為例,本章分標(biāo)準(zhǔn)庫配置和cubemx配置HAL庫兩部分,可以在目錄中選擇自己想要看的部分,點(diǎn)擊跳轉(zhuǎn)就行了。

      二、標(biāo)準(zhǔn)庫函數(shù)模板創(chuàng)建

      標(biāo)準(zhǔn)庫函數(shù)建立所需要的文件我放在了網(wǎng)盤鏈接里,可以自行下載。
      網(wǎng)盤鏈接:https://pan.baidu.com/s/1bYdnK9j6b8ze4wAFs0FRd
      密碼:6muu

      1、新建模板文件

      (1) 新建一個(gè)文件夾,命名為“標(biāo)準(zhǔn)庫函數(shù)模板文件” 。
      在這里插入圖片描述
      (2)在新建文件夾下, 在新建三個(gè)文件夾,命名為:“Obj 文件夾”、“User 文 件 夾”、“Libraries 文件夾”
      在這里插入圖片描述

      • Libraries 文件夾:用于存放CMSIS標(biāo)準(zhǔn)STM32外設(shè)驅(qū)動(dòng)文件。
      • Obj 文件夾:用于存放keil編譯產(chǎn)生的 c/匯編/鏈接的列表清單、調(diào)試信息、 hex 文件、預(yù)覽信息、封裝庫等文件。
      • User 文 件 夾: 用 于 存 放用 戶 編 寫的 main.cstm32f10x.h 頭 文 件stm32f10x_conf.h配置文件stm32f10x_it.cstm32f10x_it.h中斷函數(shù)文件。

      (3)Libraries 文件夾下新建兩個(gè)文件命名為:CMSISSTM32F10x_StdPeriph_Driver
      在這里插入圖片描述

      • CMSIS文件夾:用于存放 一 些CMSIS標(biāo)準(zhǔn)文件啟動(dòng)文件
      • STM32F10x_StdPeriph_Driver文件夾:用于存放STM32 外設(shè)驅(qū)動(dòng)文件

      (4)CMSIS文件夾下放置以下文件:


      在這里插入圖片描述

      文件在我給的網(wǎng)盤鏈接文件:STM32最新固件庫v3.5\Libraries\CMSIS\CM3\CoreSupport 路徑下


      在這里插入圖片描述

      文件在我給的網(wǎng)盤鏈接文件:STM32最新固件庫v3.5\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm路徑下


      在這里插入圖片描述

      文件在我給的網(wǎng)盤鏈接文件:STM32最新固件庫v3.5\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x路徑下


      匯總圖
      在這里插入圖片描述
      (5)STM32F10x_StdPeriph_Driver文件夾下放置以下文件:


      在這里插入圖片描述

      兩文件直接從我給的網(wǎng)盤鏈接文件:STM32最新固件庫v3.5\Libraries\STM32F10x_StdPeriph_Driver路徑下復(fù)制


      inc文件夾里有:
      在這里插入圖片描述
      src文件夾下有:
      在這里插入圖片描述
      可以知道兩文件夾下放的是各類外設(shè)的驅(qū)動(dòng)文件。

      (6)User文件夾下放置以下文件:


      在這里插入圖片描述

      文件在我給的網(wǎng)盤鏈接文件:STM32最新固件庫v3.5\Project\STM32F10x_StdPeriph_Template路徑下


      在這里插入圖片描述

      文件在我給的網(wǎng)盤鏈接文件:STM32最新固件庫v3.5\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x路徑下


      匯總圖
      在這里插入圖片描述
      到此文件建立完畢。

      2、新建工程添加文件

      (1)打開keil5軟件新建工程
      在這里插入圖片描述
      (2)工程名根據(jù)喜好命名,但是要注意使用英文,如果使用中文名可能會(huì)出現(xiàn)一些奇怪的錯(cuò)誤,這里我們命名為 Template,文件點(diǎn)擊保存在最開始創(chuàng)建的 “標(biāo)準(zhǔn)庫函數(shù)模板文件”的文件夾下。
      在這里插入圖片描述
      (3)選擇芯片類型,這里我們選擇STM32F103ZE,點(diǎn)擊OK。
      在這里插入圖片描述
      (4)隨后點(diǎn)擊Cancel
      在這里插入圖片描述
      (5)根據(jù)文件類型創(chuàng)建目錄,點(diǎn)擊OK
      在這里插入圖片描述

      • 這樣做為了工程目錄更加清晰及方便文件查找,新建User、Startup、StdPeriph_Driver和CMSIS工程組
      • User組用于存放User文件夾下的源文件,Startup組用于存放STM32的啟動(dòng)文件StdPeriph_Driver組用于存放STM32外設(shè)的驅(qū)動(dòng)源文件CMSIS組用于存放CMSIS標(biāo)準(zhǔn)文件
        (6)添加文件到目錄下

      在這里插入圖片描述

      • 我們發(fā)現(xiàn)這里我們只創(chuàng)建了User、Obj、Libraries文件夾,卻多出了另外2個(gè)文件夾ObjectsListings,這是因?yàn)槭褂肒EIL5創(chuàng)建工程時(shí)默認(rèn)會(huì)產(chǎn)生這兩個(gè)文件夾用于存放程序編譯后的列表文件及HEX等文件,這里我們將這兩個(gè)文件夾刪除。
      • 文件類型我們需要選擇為“All files(.)”,這樣我們才看到所有類型的文件

      所有文件添加到對應(yīng)目錄下后,如圖所示:
      在這里插入圖片描述
      (7)雙擊main.c文件,刪除里面所有內(nèi)容后,修改為:
      在這里插入圖片描述

      3、配置魔術(shù)棒

      (1)打開魔術(shù)棒,點(diǎn)擊Target,勾選微庫“UseMicroLib”。主要是為了后面printf重定向輸出使用,不然會(huì)出現(xiàn)各種奇怪的現(xiàn)象。配置如下:
      在這里插入圖片描述
      (2)點(diǎn)擊Output,點(diǎn)擊Select Folder for Objects 把輸出文件夾定位到我們工程目錄下的Obj文件夾下,勾選CreateHEXFile,使編譯的過程中生成hex文件配置如下:
      在這里插入圖片描述
      (3)點(diǎn)擊Listing,點(diǎn)擊Select Folder for Objects ,把輸出文件夾定位到我們工程目錄下的Obj文件夾下,配置如圖:
      在這里插入圖片描述
      (4)C/C++配置(重點(diǎn))


      • 點(diǎn)擊C/C++因?yàn)閯?chuàng)建的是標(biāo)準(zhǔn)庫函數(shù)模板,所以需要在對處理器類型和庫進(jìn)行宏定義,在Define這里復(fù)制這兩個(gè)宏:USE_STDPERIPH_DRIVER,STM32F10X_HD,如圖所示:
        在這里插入圖片描述

      • 點(diǎn)擊Include Paths設(shè)置文件路徑
        在這里插入圖片描述

      配置好的路徑如下
      在這里插入圖片描述
      (5)配置Debug,我用的是普中官方給的串口下載軟件,不用配置Debug,但還是給大家講一下。


      • 當(dāng)你的仿真器安裝好驅(qū)動(dòng)并且連接了電腦和板子,那么就可以開始配置了。具體的配置如下:
        在這里插入圖片描述

      • 點(diǎn)擊Settings,選擇Port,選擇“SW”。配置如下:
        在這里插入圖片描述
        SW與JTAG是仿真方式,建議大家使用SW模式,如果使用JTAG模式的話,后面有些例程是占用了一部分管腳的,這個(gè)在cubemx中有配置如:
        在這里插入圖片描述

      • 點(diǎn)擊Flash Download,勾選Reset and Run。配置如圖:
        在這里插入圖片描述
        Reset and Run選項(xiàng)中,如果勾上的話,當(dāng)程序下載進(jìn)去后自動(dòng)復(fù)位運(yùn)行,如果不勾上,程序下載進(jìn)去后需按下開發(fā)板上復(fù)位鍵才能運(yùn)行。通常我們選擇勾上。

      4、編譯運(yùn)行

      點(diǎn)擊編譯
      在這里插入圖片描述

      可以從左下角看出,是0錯(cuò)誤,0警告。


      圖標(biāo)1中

      • 第一個(gè)編譯是對單個(gè)文件編譯。
      • 第二個(gè)編譯是對工程中修改過的文件進(jìn)行編譯。
      • 第三個(gè)編譯是對工程中所有文件進(jìn)行編譯。
        通常我們使用的是中間那個(gè)編譯,效率比較高。

      到這里整個(gè)標(biāo)準(zhǔn)庫模板創(chuàng)建結(jié)束。

      三、使用cubemx創(chuàng)建HAL庫函數(shù)模板

      1、cubemx功能介紹

      cubemx主界面
      在這里插入圖片描述
      (1)已建立的工程
      Open Existing Projects:打開項(xiàng)目工程。
      (2)新建工程

      • Start My project from MCU:從MCU開始新建項(xiàng)目。(經(jīng)常用)
      • Start My project from STBoard:從ST開發(fā)板開始新建項(xiàng)目。
      • project from Cross Selector:從交叉選擇器啟動(dòng)我的項(xiàng)目。
        (3)軟件包管理
      • CHECK FOR UPDATE:檢查更新軟件和軟件包。
      • INSTALL/REMOVE:安裝或移除軟件包。
        (4)關(guān)于STM32和外部工具
      • About STM32:STM32芯片與以及相關(guān)圖標(biāo)。
      • External Tools:相關(guān)ST公司推出的工具。
        (5)相關(guān)網(wǎng)站
        包括ST官網(wǎng)、YOUTube網(wǎng)等。
        (6)菜單欄

      File
      在這里插入圖片描述

      • New Project:新建工程(Ctrl + N)
      • Load Project:導(dǎo)入工程(Ctrl + L)
      • Import Project:引入項(xiàng)目(Ctrl + I)
      • Save Project:保存工程(Ctrl + S)
      • Save Project As:另存工程(Ctrl + A)
      • Close Project:關(guān)閉工程(Ctrl + C)
      • Generate Report:生成報(bào)告(Ctrl + R)
      • Recent Projects:最近工程
      • Exit:退出軟件(Ctrl + X)

      • Window

      在這里插入圖片描述

      • Outputs:輸出信息
      • Font size :設(shè)置字體大小,設(shè)置完成之后需要重新啟動(dòng)

      • Help
        在這里插入圖片描述
      • Help:幫助(F1)STM32CubeMX的用戶手冊。
      • About:關(guān)于(Alt + A)STM32CubeMX的版本信息。
      • Docs & Resources:文檔和資源(Alt + D)。
      • Refresh Data:更新數(shù)據(jù)(Alt + R) 更新MCU/BOARD數(shù)據(jù),HAL庫版本信息。
      • User Preferences:用戶設(shè)定,是否允許ST公司獲取你的使用數(shù)據(jù)。
      • Check for Updates:檢測更新(Alt + C)。
      • Manage embedded…:軟件包管理(Alt + U)。
      • Updater Settings:更新設(shè)置(Alt + S)。
        在這里插入圖片描述
        在這里插入圖片描述

      2、cubemx配置生成文件

      (1)點(diǎn)擊ACCESS TO MCU SELECYOR,搜索要配置的芯片,雙擊確認(rèn)。


      在這里插入圖片描述


      在這里插入圖片描述


      頁面功能如下:
      在這里插入圖片描述

      (2)點(diǎn)擊System Core,點(diǎn)擊RCC,選擇外部高速時(shí)鐘HSE
      在這里插入圖片描述
      (3)點(diǎn)擊SYS,點(diǎn)擊Debug選項(xiàng),選擇SW調(diào)試(用到引腳要少一些,上面講過)。
      在這里插入圖片描述
      (4)點(diǎn)擊Clock Configuration進(jìn)行時(shí)鐘樹配置。
      在這里插入圖片描述
      有關(guān)時(shí)鐘樹不懂的,可以看:【STM32】STM32標(biāo)準(zhǔn)庫與HAL庫對照學(xué)習(xí)教程特別篇–系統(tǒng)時(shí)鐘RCC詳講
      (5)點(diǎn)擊Project Manager,選擇配置。


      在這里插入圖片描述

      這里有問題,文件路徑不要有中文,要不然要報(bào)錯(cuò)。


      點(diǎn)擊Code Generator,選擇配置
      在這里插入圖片描述


      (6)點(diǎn)擊GENERATE CODE,生成工程,點(diǎn)擊close。


      在這里插入圖片描述


      3、寫程序的要求

      (1)找到生成的文件,點(diǎn)擊MDK-ARM文件,打開工程。


      在這里插入圖片描述


      在這里插入圖片描述


      在這里插入圖片描述


      (2)打開main.c
      在這里插入圖片描述
      (2)書寫代碼區(qū)。
      在這里插入圖片描述
      對于沒有強(qiáng)迫癥的盆友,其實(shí)不用按什么區(qū)來寫代碼,只要代碼寫在BNEGINEND之間,使用cubemx重新生成工程時(shí),自己寫的代碼都不會(huì)被刪除,分區(qū)只是為了方便自己找到對應(yīng)代碼區(qū)。
      到這里使用cubemx生成HAL庫模板工程就完成啦。

      四、兩文件對比

      (1)文件結(jié)構(gòu)對比。


      標(biāo)準(zhǔn)庫
      在這里插入圖片描述


      HAL庫
      在這里插入圖片描述


      • 外設(shè)與核心驅(qū)動(dòng)文件,標(biāo)準(zhǔn)庫是在Libraries文件內(nèi),HAL庫是在Drivers文件內(nèi)。
      • 用戶使用文件,標(biāo)準(zhǔn)庫是在User文件內(nèi),HAL庫是在Core文件內(nèi)。
      • hex生成位置,標(biāo)準(zhǔn)庫是在Obj文件內(nèi),HAL庫是在MDK-ARM內(nèi)的命名文件內(nèi)。
        (2)程序書寫規(guī)則對比
      • 標(biāo)準(zhǔn)庫模板工程·中,可以在C語法使用正確的情況下,按自己的風(fēng)格寫。
      • cubemx生成的工程中,需要在對應(yīng)區(qū)域內(nèi)寫代碼,否則重新使用cubemx生成工程時(shí),會(huì)將自己寫的程序刪除。
        (3)編譯速度
      • 標(biāo)準(zhǔn)庫模板工程編譯速度較快,可以根據(jù)需要添加對應(yīng)的外設(shè)驅(qū)動(dòng)文件。
      • cubemx生成的工程編譯較慢,因?yàn)槠浒怂械耐庠O(shè)驅(qū)動(dòng)文件,程序編譯時(shí)要將這些文件都編譯一下。

      到這里庫函數(shù)模板創(chuàng)建就介紹完了,重要的還是自己要多多練習(xí),自己去發(fā)現(xiàn)問題,解決問題才行。
      在這里插入圖片描述

        本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多

        主站蜘蛛池模板: 青青草无码免费一二三区| 在线观看成人年视频免费| 成人午夜大片免费看爽爽爽| 日本成熟少妇激情视频免费看| 99久久免费精品国产72精品九九| 亚洲 一区二区 在线| 天天影视网色香欲综合网| 久久精品人妻中文系列葵司| 重口SM一区二区三区视频| 日韩亚洲AV人人夜夜澡人人爽| 男女动态无遮挡动态图| 乱子真实露脸刺激对白| 精品一卡2卡三卡4卡乱码精品视频| 久久久久久国产精品免费免费男同 | 国内精品自线在拍| 国色天香成人一区二区| 亚洲成AV人片在线观看麦芽| 免费无码黄十八禁网站| 一本一道av无码中文字幕麻豆| 又大又长粗又爽又黄少妇毛片| 国产精品欧美福利久久| 日本55丰满熟妇厨房伦| 久久精品国产再热青青青| 成A人片亚洲日本久久| 国产精品自在自线视频| 亚洲国产成人综合精品| 国产亚洲精品国产福APP| 国产欧美日韩亚洲一区二区三区| 猫咪AV成人永久网站在线观看| AV喷水高潮喷水在线观看COM| 国产麻豆成人传媒免费观看| 色婷婷久久综合中文久久一本 | 92精品国产自产在线观看481页 | 国产卡一卡二卡三精品| 国产av午夜精品福利| 亚洲爆乳无码一区二区三区| 欧美国产综合欧美视频| 69天堂人成无码免费视频| 夜夜未满十八勿进的爽爽影院| 国产成人午夜福利在线观看| 99国精品午夜福利视频不卡99 |