<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32學(xué)前班教程之四:打好基礎(chǔ)建立模板

          STM32學(xué)前班教程之四:打好基礎(chǔ)建立模板

          作者: 時(shí)間:2016-11-27 來源:網(wǎng)絡(luò) 收藏
          1、新建目錄Project_IAR4,按照自己的順序重新組織dll(驅(qū)動(dòng));inc、src函數(shù)庫;settings,其他所有文件全部放這個(gè)新建的目錄下。

          2、雙擊打開Project.eww,繼續(xù)更改內(nèi)部設(shè)置。

          3、需更改的內(nèi)容列表:

          位置和項(xiàng)目目標(biāo)說明

          ProjectEdirconfignations新建基于STM3210B的配置編譯目標(biāo)和過程文件存放

          ProjectOptionGeneralOptionTargetSTSTM32F10x選擇芯片類型

          ProjectOptionC/C++CompilerPreprocessorAdditionalincludedirectories$PROJ_DIR$

          $PROJ_DIR$inc頭文件相對(duì)位置,需要包括“map/lib/type”的位置

          ProjectOptionC/C++CompilerPreprocessorDefinedsymbols空白是在Flash里面調(diào)試程序,VECT_TAB_RAM是在RAM里調(diào)試程序

          ProjectOptionC/C++CompilerOptimizationsSize最終編譯一般選擇High

          調(diào)試可選NoneNone,Low,Medium,High是不同的代碼優(yōu)化等級(jí)

          ProjectOptionLinkerOutput去掉Overrridedefault輸出格式使用默認(rèn)

          ProjectOptionLinkerExtraOutput打開GeneralExtraOutput去掉Overrridedefault廠家要求

          ProjectOptionLinkerConfig打開Overrridedefault

          $PROJ_DIR$lnkarm_flash.xcl使用Flash調(diào)試程序,如果需要使用RAM調(diào)試則改為lnkarm_RAM.xcl

          ProjectOptionDebuggerSetupDriverThird-PartyDriver使用第三方驅(qū)動(dòng)連接單片機(jī)

          ProjectOptionDebuggerDownloadUseflashloader下載到flash所需的設(shè)置

          ProjectOptionDebuggerThird-PartyDriverThird-PartyDriverIARdebuggerdriver$PROJ_DIR$ddlSTM32Driver.dll驅(qū)動(dòng)文件路徑

          注1:所有跟路徑相關(guān)的設(shè)置需要根據(jù)實(shí)際情況編寫,相對(duì)路徑的編寫——“$PROJ_DIR$”代表eww文件所在文件夾,“..”代表向上一層。

          注2:其他設(shè)置使用庫函數(shù)里面的工程文件的默認(rèn)選項(xiàng)即可,初學(xué)不用了解太多。

          4、需要重新刪除并重新添加Project下“FWLib”和“User”的所有文件,為了刪減外設(shè)模塊方便需要在“USER”額外添加“stm32f10x_conf.h”(不添加也可以,需要展開main.c找到它)。然后執(zhí)行ProjectRebuidAll,通過則設(shè)置完畢。

          5、完成以上步驟,第一個(gè)自己習(xí)慣的程序庫就建立完畢了,以后可以從“stm32f10x_conf.h”中刪減各種庫文件,從“stm32f10x_it.c”編輯中斷,從“main.c”編寫得到自己的程序。最后需要將這個(gè)庫打包封存,每次解壓縮并修改主目錄名稱即可。

          6、我的程序庫特點(diǎn):

          a)默認(rèn)兼容ST-LINK-II,IAREWARM4.42A,F(xiàn)lash調(diào)試,其他有可能需要更改設(shè)置

          b)為操作方便減少了目錄的層次

          c)為學(xué)習(xí)方便使用網(wǎng)友漢化版2.0.2固件,主要是庫函數(shù)中c代碼的注釋。

          后面隨著學(xué)習(xí)深入將在我的模板里面加入如下內(nèi)容:

          d)加入必用的flash(讀取優(yōu)化),lib(debug),nvic(中斷位置判斷、開中斷模板),rcc(時(shí)鐘管理模板,開啟外設(shè)時(shí)鐘模板),gpio(管腳定義模板)的初始化代碼,所有模板代碼用到的時(shí)候只要去掉前面的注釋“//”,根據(jù)需求填入相應(yīng)值就可以了。

          e)因?yàn)樽约河浶圆缓?,所以main函數(shù)中的代碼做到每行注釋,便于自己以后使用。

          f)集成Print_U函數(shù)簡(jiǎn)單串口收發(fā)函數(shù)代碼,便于調(diào)試,改變使用Printf函數(shù)的調(diào)試習(xí)慣。

          g)集成使用systick的精確延時(shí)函數(shù)delay。

          h)集成時(shí)鐘故障處理代碼。

          i)集成電壓監(jiān)控代碼。

          j)集成片上溫度檢測(cè)代碼。

          k)逐步加入所有外設(shè)的初始化模塊

          一、編寫程序所需的步驟

          1、解壓縮,改目錄名稱,和eww文件名,以便跟其他程序區(qū)分。

          2、更改設(shè)置:在“stm32f10x_conf.h”關(guān)閉不用的外設(shè)(在其聲明函數(shù)前面加注釋符號(hào)“//”)。并根據(jù)外部晶振速度更改其中“HSE_Value”的數(shù)值,其單位是Hz。

          3、完成各種頭文件的包含(#include"xxx.h";),公共變量的聲明(static數(shù)據(jù)類型變量名稱;),子程序聲明(void函數(shù)名稱(參數(shù));)……C語言必須的前置工作。

          4、改寫我的程序庫里面所預(yù)設(shè)的模板,再進(jìn)行其他模塊的初始化子程序代碼的編寫,并在程序代碼的開始部分調(diào)用。注意:必須記住所有外設(shè)的使用需要考慮4個(gè)問題:

          a)開時(shí)鐘RCC(在RCC初始化中);

          b)自身初始化;

          c)相關(guān)管腳配置(在GPIO初始化中);

          d)是否使用中斷(在NVIC初始化中)

          5、編寫main.c中的主要代碼和各種子函數(shù)。

          6、在“stm32f10x_it.c”填寫各種中斷所需的執(zhí)行代碼,如果用不到中斷的簡(jiǎn)單程序則不用編寫此文件。

          7、編譯生成“bin”的方法:ProjectOptionLinkerOutputFormat,里面選擇“Other”,在下面的“Output”選“raw-binary”生成bin。

          8、編譯生成“hex”的方法:ProjectOptionLinkerOutputFormat,里面選擇“Other”,在下面的“Output”選“intel-extended”,生成a79直接改名成為hex或者選中上面的“OutputFlie”在“Overrridedefault”項(xiàng)目里面改擴(kuò)展名為hex。

          使用軟件界面的Debug燒寫并按鈕調(diào)試程序。注意,ST-Link-II是直接將程序燒寫進(jìn)Flash進(jìn)行調(diào)試,而不是使用RAM的方式。


          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();