IAR新建工程
下載庫函數
本文介紹基于 IAR+官方標準固件庫,來新建 STM8S003F
工程,STM8S 的標準固件庫可以到 ST 的官方網站中找到并下載:ST官網
1.在搜索欄上搜索 STM8S003F ,點擊工具與軟件
2.在工具與軟件欄中找到:STM8S/A標準外設庫,點擊下載(en.stsw-stm8069_v2.3.1.zip):
3.把下載的標準固件庫解壓并打開,可以看到里面有如下內容:
建立工程模板
上圖中的Libraries和Project文件夾中,有部分內容是新建工程所需要的,在建立工程之前,先選擇一個路徑,新建一個 Template 文件夾(作為以后新建工程的模板),并在文件夾中分別新建以下五個文件夾:
- APP:用于存放用戶程序,簡單的應用這個文件夾一般空在那里;
- Driver:用于存放工程文件;從STM8 標準固件庫以下路徑:..\STM8S_StdPeriph_Lib\Project\STM8S_StdPeriph_Template\,拷貝main.c、 stm8s_conf.h、stm8s_it.c、stm8s_it.h四個文件到我們建好的User文件夾。
- Lib:用于存放STM8標準固件庫文件:從前面下載的STM8標準固件庫里找到 以下路徑:…\STM8S_StdPeriph_Lib\Libraries\STM8S_StdPeriph_Driver\,然 后將文件夾下inc和src兩個文件拷貝到我們建立好的文件夾Lib下
- Readme:用于存放說明文檔,文件夾下可建立 .doc 文件或 .txt 文件,如readme.txt, 記錄開發進度或技術說明;
- User:用于存放自己編寫的驅動文件;
IAR工程建立及屬性設置
新建workplace和project
1.打開IAR,新建一個工作空間(即workspace,這步有時候可以跳過,因為啟動IAR時已經有一個workspace),點擊 Project→Cheat New Project...→Empty project→OK→然后彈出保存窗口,輸入你要建立的工程名,如STM8S_IR,選擇保存文件夾,將工程保存在我們第二步創建的文件夾的User文件夾下如..\STM8_LED\User\,然后點擊保存。
2.出現以下一個空的工程:
Add Group
用鼠標選中該工程,點擊右鍵出現右鍵菜單,依次點擊 Add →Add Group... 創建分組如下:
注:如果項目計劃里有用戶應用程序,則還需添加 App 分組;如果有用到自己編寫的驅動文件,則需要添加 Driver 分組;
Add Files
在上面三個 Group 中分別 Add Files...,添加如下:
- Lib:添加stm8s_gpio.c和stm8s.h文件(該文件路徑為..\STM8_IR\Lib\src\,這里其實可以不用加.h文件,但由于后面有修改到,所以加了;添加之后會自動產生一個 Output 組)
- Readme:添加 readme.txt 文件(該文件路徑為..\STM8_IR\Readme\)
- User:添加 main.c 文件(該文件路徑為..\STM8_IR\User\)
頭文件編譯路徑設置
這里只添加了 .c 文件,而不用添加相關.h文件的原因是,我設置了頭文件的包含路徑 ,設置如下:工程名右鍵→Options...→C/C++ compiler→Preprocessor
路徑"$PROJ_DIR$\..\Lib\inc"是相對路徑,"$PROJ_DIR$"是你在常見new project的時候所選擇的路徑,換句話說也就是 .ewp 的所存放的路徑,..\ 指的是當前目錄的上一個目錄,當然,如果你的.c文件是和.h文件是在同一個目錄下的話,可以不用設置該路徑。
芯片型號設置
接下來還需要對工程屬性進行設置:右鍵點擊工程 STM8_IR,在彈出來的菜單里點擊 Options...,在彈出的窗口<Options for mode “STM8_LED”>的 General Options 標簽頁的 Target 標簽里的 Device 欄選擇芯片型號,我用的是 stm8s003F3,根據實際芯片選擇即可。
代碼優化選項
工程的進一步設置,首先是 C/C++ Compiler 標簽的 Optimizations 標簽頁,Level 框中勾選 Medium ,這是選擇了中等的代碼優化選項
燒錄文件格式設置
然后是 Output Converter 標簽頁,設置串口下載文件格式,設置如下:
Linker 中的 Output 中的 output filename 不需要進行修改,保持xxx.out文件格式就行了,不需要改成.hex文件,不然編出來的hex文件放到 stvp 中燒錄會出現not intel hex format的報錯提示(而且改出來之后的hex文件比較大,跟原來的out文件差不多大小)
燒錄工具設置
Debug 標簽的 Setup 標簽頁,在 Driver 欄選擇 ST-LINK 。注:這項設置非常重要,我們最常用的就是 ST-LINK 下載和調試功能:
對頭文件"stm8s.h"修改
最后一個,打開 stm8s.h 文件,做一個小的修改,即把你使用芯片的對應的代碼從注釋狀態解放出來(從官網下載來的庫一開始都是只讀RO模式,要改成可修改模式),舉例如下:
這個操作其實等同于以下操作(兩者選其一就行了,不然編譯時會Warning):
保存工程
點擊Save All,將一個 .eww 文件保存到 User 目錄下,下次要打開該工程直接點擊此文件就可以了
IAR使用過程中遇到的問題
包含錯誤的路徑
原因是我對整個工程目錄進行了移動,移動后,需要點擊Project→Clean,這樣才不會再彈出包含錯誤路徑的窗口
no definition for xxx
原因是沒引進相關的 .c 文件,需要在Group組中的添加 stm8s_gpio.h 就能解決這個問題了
duplicate definitions for xxx
原因是重復定義了,比如下面報錯例子:
具體原因是:delay.c中的中斷服務函數、remote.c中的中斷服務與stm8s_it.c中的中斷服務函數重復定義了;所以要把stm8s_it.c給remove掉
總結
- 上一篇: javascript --- [虚拟D
- 下一篇: webpack --- [4.x]你能