welcom ! Handel home

2014年6月17日 星期二

STM32教程(4)

 STM32學前班教程之四:打好基礎建立範本 


1
新建目錄Project_IAR4,按照自己的順序重新組織dll(驅動);incsrc函式程式庫;settings,其他所有檔全部放這個新建的目錄下。 

2
按兩下打開Project.eww,繼續更改內部設置。 

3
需更改的內容清單: 

位置和專案 目標 說明 

Project\Edir confignations
新建基於STM3210B的配置 編譯目標和過程檔存放 

Project\Option\General Option\Target ST STM32F10x
選擇晶片類型 

Project\Option\ C/C++ Compiler\Preprocessor\Additional include directories $PROJ_DIR$\ 

$PROJ_DIR$\inc
標頭檔相對位置,需要包括“map/lib/type”的位置 

Project\Option\ C/C++ Compiler\Preprocessor\Defined symbols  
空白是在Flash裡面偵錯工具,VECT_TAB_RAM是在RAM裡偵錯工具 

Project\Option\ C/C++ Compiler\Optimizations\Size
最終編譯一般選擇High 

調試可選None None,Low,Medium,High是不同的代碼優化等級 

Project\Option\ Linker\Output
去掉Overrride default 輸出格式使用默認 

Project\Option\ Linker\Extra Output
打開General Extra Output去掉Overrride default 廠家要求 

Project\Option\ Linker\Config
打開Overrride default 

$PROJ_DIR$\lnkarm_flash.xcl
使用Flash偵錯工具,如果需要使用RAM調試則改為lnkarm_RAM.xcl 

Project\Option\ Debugger\Setup\Driver  Third-Party Driver
使用協力廠商驅動連接單片機 

Project\Option\ Debugger\ Download Use flash loader
下載到flash所需的設置 

Project\Option\ Debugger\ Third-Party Driver\ Third-Party Driver\IAR debugger driver $PROJ_DIR$\ddl\STM32Driver.dll
驅動檔路徑 

1:所有跟路徑相關的設置需要根據實際情況編寫,相對路徑的編寫——“$PROJ_DIR$”代表eww檔所在資料夾,“..”代表向上一層。 

2:其他設置使用庫函數裡面的工程檔的預設選項即可,初學不用瞭解太多。 

4
需要重新刪除並重新添加Project“FWLib”“User”的所有檔,為了刪減外設模組方便需要在“USER”額外添加“stm32f10x_conf.h”(不添加也可以,需要展開main.c找到它)。然後執行Project\Rebuid All,通過則設置完畢。 

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

6
我的程式庫特點: 

a)
默認相容ST-LINK-IIIAR EWARM 4.42AFlash調試,其他有可能需要更改設置 

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

c)
為學習方便使用網友漢化版2.0.2固件,主要是庫函數中c代碼的注釋。 

後面隨著學習深入將在我的範本裡面加入如下內容: 

d)
加入必用的flash(讀取優化),libdebug),nvic(中斷位置判斷、開中斷範本),rcc(時鐘管理範本,開啟外設時鐘範本),gpio(管腳定義範本)的初始化代碼,所有範本代碼用到的時候只要去掉前面的注釋“//”,根據需求填入相應值就可以了。 

e)
因為自己記性不好,所以main函數中的代碼做到每行注釋,便於自己以後使用。 

f)
集成Print_U函數簡單串口收發函數代碼,便於調試,改變使用Printf函數的調試習慣。 

g)
集成使用systick的精確延時函數delay 

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

i)
集成電壓監控代碼。 

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

k)
逐步加入所有外設的初始化模組 

一、編寫程式所需的步驟

1
、解壓縮,改目錄名稱,和eww檔案名,以便跟其他程式區分。

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

3
、完成各種標頭檔的包含(#include "xxx.h";),公開變數的聲明(static 資料類型 變數名稱;),副程式聲明(void 函數名稱(參數);……C語言必須的前置工作。

4
、改寫我的程式庫裡面所預設的範本,再進行其他模組的初始化副程式代碼的編寫,並在程式碼的開始部分調用。注意:必須記住所有外設的使用需要考慮4個問題:

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

b)     
自身初始化;

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

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

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

6
、在“stm32f10x_it.c”填寫各種中斷所需的執行代碼,如果用不到中斷的簡單程式則不用編寫此檔。

7
、編譯生成 “bin”的方法:Project\Option\ Linker\Output\Format,裡面選擇“Other”,在下面的“Output” “raw-binary”生成bin

8
、編譯生成“hex”的方法:Project\Option\ Linker\Output\Format,裡面選擇“Other”,在下面的“Output”“intel-extended”,生成a79直接改名成為hex或者選中上面的“Output Flie”“Overrride default”項目裡面改副檔名為hex

使用軟體介面的Debug燒寫並按鈕偵錯工具。注意,ST-Link-II是直接將程式燒寫進Flash進行調試,而不是使用RAM的方式。 


沒有留言: