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