STM32學前班教程之四:打好基礎建立範本
1、 新建目錄Project_IAR4,按照自己的順序重新組織dll(驅動);inc、src函式程式庫;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-II,IAR EWARM 4.42A,Flash調試,其他有可能需要更改設置
b) 為操作方便減少了目錄的層次
c) 為學習方便使用網友漢化版2.0.2固件,主要是庫函數中c代碼的注釋。
後面隨著學習深入將在我的範本裡面加入如下內容:
d) 加入必用的flash(讀取優化),lib(debug),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的方式。
沒有留言:
張貼留言