stlink v2不帶外殼光盤stm8單片機(jī)入門v3_第1頁
stlink v2不帶外殼光盤stm8單片機(jī)入門v3_第2頁
stlink v2不帶外殼光盤stm8單片機(jī)入門v3_第3頁
stlink v2不帶外殼光盤stm8單片機(jī)入門v3_第4頁
stlink v2不帶外殼光盤stm8單片機(jī)入門v3_第5頁
已閱讀5頁,還剩83頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、ST(意法半導(dǎo)體) 8 位微控制器系列STM8 系列單片機(jī)入門2011-06-15 ! #$% , 1 STM8 系列微控制器簡介STM8 系列微控制器簡介1ST 的 8 位微控制器基于高性能 8 位內(nèi)核,配有先進(jìn)的成套外設(shè)。 該采用 ST的 130 nm非易性器專有技術(shù)。STM8 通過增強(qiáng)型堆棧指針運(yùn)算、先進(jìn)的尋址模式和新指令實(shí)現(xiàn)快速、安全的開發(fā)。STM8支持三種主要產(chǎn)品線:STM8S,通用微控制器STM8L,超低功耗 EnergyLite 微控制器STM8A,汽車級(jí)微控制器STM8S 系列1.12009 年 3 月 4 日, 意法半導(dǎo)體發(fā)布了針對工業(yè)應(yīng)用和消費(fèi)電子開發(fā)的微控制器STM8S

2、系列產(chǎn)品。打造 8 位微控制器的全新世代,高達(dá) 20 MIPS 的CPU 性能和 2.95-5.5VSTM8S的電壓范圍,有助于現(xiàn)有的 8 位系統(tǒng)向電壓更低的電源過渡。新產(chǎn)品嵌入的 130nm 非易失性器是當(dāng)前 8 位微控制器中最先進(jìn)的技術(shù)之一,并提供真正的 EEPROM 數(shù)據(jù)寫入操作,可達(dá) 30 萬次擦寫極限。在家用電器、加熱通風(fēng)空調(diào)系統(tǒng)、工業(yè)自動(dòng)化、電動(dòng)工具、個(gè)人護(hù)理設(shè)備和電源控制管理系統(tǒng)等各種產(chǎn)品設(shè)備中,新產(chǎn)品配備的豐富外設(shè)可支持精確控制和監(jiān)視功能。功能包括 10 位模數(shù)轉(zhuǎn)換器,最多有 16 條通道,轉(zhuǎn)換用時(shí)小于 3 微秒;先進(jìn)的 16 位控制定時(shí)器可用于馬達(dá)控制、捕獲/比較和功能。其它

3、外設(shè)包括一個(gè) CAN2.0B接口、兩個(gè) U(S)ART 接口、一個(gè) I2C 端口、一個(gè) SPI 端口。3 / 881 STM8 系列微控制器簡介STM8S的外設(shè)定義與 STM32 系列 32 位微控制器相同。外設(shè)共用性有助于提高不同產(chǎn)品間的兼容性,讓設(shè)計(jì)靈活有彈性。應(yīng)用代碼可移植到 STM32上,獲得更高的性能。除設(shè)計(jì)靈活外,STM8S 的組件和封裝在引腳上完全兼容,讓開發(fā)得到更大的空間,以便優(yōu)化引腳數(shù)量和外設(shè)性能。引腳兼容還有益于省上市時(shí)間,簡化產(chǎn)品升級(jí)過程?;O(shè)計(jì)決策,產(chǎn)品化可節(jié)STM8S主要特點(diǎn):速度達(dá)20 MIPS的高性能內(nèi)核能力強(qiáng),品質(zhì)安全可靠領(lǐng)先的130納米制造工藝,優(yōu)異的性價(jià)比程

4、序空間從4K到128K,選擇從20腳到80腳,寬范圍產(chǎn)品系列系統(tǒng)成本低,內(nèi)嵌EEPROM和高精度RC振蕩器開發(fā)容易,擁有本地化工具支持STM8S主要應(yīng)用::傳感器、致動(dòng)器、安全系統(tǒng)微控制器、DC馬達(dá)、車身控制、汽車收音機(jī)、LIN節(jié)點(diǎn)、加熱/通風(fēng)空調(diào)工業(yè)應(yīng)用:家電、家庭自動(dòng)化、馬達(dá)控制、空調(diào)、感應(yīng)、計(jì)量儀表、不間斷電源、安全消費(fèi)電子:電源、小家電、音響、玩具、銷售點(diǎn)終端機(jī)、前面板、電視、監(jiān)視設(shè)備醫(yī)療設(shè)備:個(gè)人護(hù)理產(chǎn)品、緊急求助器材、便攜護(hù)理設(shè)備、醫(yī)院護(hù)理設(shè)備、血壓測量、血糖測量、STM8S 產(chǎn)品線:4 / 881STM8 系列微控制器簡介1.2 STM8L 系列2009 年 9 月 15 日,意

5、法半導(dǎo)體宣布,首批整合其高性能 8 位架構(gòu)和最近發(fā)布的超低功耗創(chuàng)新技術(shù)的 8 位微控制器開始量產(chǎn)。以節(jié)省運(yùn)行和待機(jī)功耗為特色,STM8L 系列下設(shè)三個(gè)產(chǎn)品線,共計(jì) 26 款產(chǎn)品,涵蓋多種高性能和多功能應(yīng)用。設(shè)計(jì)工程師利用全新的 STM8L 系列可提高終端產(chǎn)品的性能和功能,同時(shí)還能滿足以市場的需求,例如,終端用戶對節(jié)能環(huán)保產(chǎn)品的需求,便攜設(shè)備、各種醫(yī)療設(shè)備、工業(yè)設(shè)備、電子計(jì)量設(shè)備、感應(yīng)或安保設(shè)備對電池使用周期的要求。設(shè)計(jì)類超低功耗的微控制器,以符合低功耗產(chǎn)品設(shè)計(jì)標(biāo)準(zhǔn),如“能源計(jì)劃”或歐盟的 EuP 法令。將選擇 STM8L 這 ”、IEA 的“1W 節(jié)能這三條 STM8L 產(chǎn)品線都基于意法半導(dǎo)體

6、的超低功耗技術(shù),這個(gè)采用意法半導(dǎo)體獨(dú)有的超低泄漏電流優(yōu)化的 130nm 制程。獨(dú)一無二的技術(shù)優(yōu)勢包括在 1.65V 到 3.6V 的整個(gè)電源電壓范圍內(nèi)達(dá)到 CPU 最大工作頻率,發(fā)揮 CPU 的全部性能。此外,由于采用一個(gè)片上穩(wěn)壓器,功耗與 Vdd 電壓無關(guān),所以具有更高的設(shè)計(jì)靈活性,并有助于簡化產(chǎn)品設(shè)計(jì)。其它創(chuàng)新特性包括低功耗非易失性器和多個(gè)電源管理模式,包括 5.4A 低功耗運(yùn)行模式、3.3A 低功耗待機(jī)模式、1A 主動(dòng)停止模式(實(shí)時(shí)時(shí)鐘運(yùn)行)和 350nA 停止模式。STM8L 可以在 4s 內(nèi)從停止模式喚醒,支持頻繁使用最低功耗模式。低功耗外設(shè),包括小于 1A 的實(shí)時(shí)時(shí)鐘和自動(dòng)喚醒(A

7、WU)模塊,有助于進(jìn)一步節(jié)省電能。總之,這個(gè)平臺(tái)可將動(dòng)態(tài)電流消耗降到 150A/MHz。5 / 881 STM8 系列微控制器簡介STM8L主要特點(diǎn):STM8 16 MHz CPU內(nèi)置 4-32 KB 閃存,多達(dá) 2KB SRAM三個(gè)系列:跨系列的引腳對引腳兼容、相互兼容、外設(shè)相互兼容電源電壓:1.8 V-3.6 V (斷電時(shí),最低 1.65 V)超低功耗模式:保持 SRAM 內(nèi)容時(shí),最低功耗 350nA運(yùn)行模式動(dòng)態(tài)功耗低至 150A/MHz最先進(jìn)的數(shù)字和模擬外設(shè)接口工作溫度范圍:-40C 到+85 C,可高達(dá) 125 C免費(fèi)的觸感固件庫STM8L主要應(yīng)用:便攜醫(yī)療設(shè)備玩具和公路電池供電設(shè)備個(gè)

8、人產(chǎn)品保安傳感器STM8L 產(chǎn)品線:6 / 881STM8 系列微控制器簡介1.3 STM8A 系列意法半導(dǎo)體公司推出的 STM8A 是一款專門用于滿足汽車應(yīng)用的特殊需求的 8-位 Flash微控制器。這些模塊化產(chǎn)品提供了真數(shù)據(jù) EEPROM 以及引腳兼容性,適用的程序存儲(chǔ)器尺寸范圍為 8KB 至 256KB 和 20 至 128-引腳封裝。所有器件的工作電壓均為 3V 至 5V,并且其工作溫度擴(kuò)展到了 145C。STM8A 主要特點(diǎn):集成式真數(shù)據(jù) EEPROM16MHz 和 128kHz RC 振蕩器高效的 STM8 內(nèi)核:在 16MHz 的頻率下可以實(shí)現(xiàn) 10MIPS 的性能應(yīng)用安全性高:

9、獨(dú)立的看門狗定時(shí)器、時(shí)鐘安全系統(tǒng)所有產(chǎn)品均具有 LIN 2.0 和自同步功能電源電壓:3.3V 和 5V最高工作溫度:145 CSTM8A主要應(yīng)用:激勵(lì)器,車體控制器,傳感器,DC 電機(jī)控制,安全微控制器,LIN 節(jié)點(diǎn),汽車無線電,HVAC7 / 881STM8 系列微控制器簡介STM8A 產(chǎn)品線:8 / 881STM8 系列微控制器簡介1.4 STM8 系列微控制器可登錄S尋找相關(guān)產(chǎn)品資料。或者直接登錄MCU的頁面/mcu 尋找相關(guān)的產(chǎn)品資料。也可以通過以下地址直接進(jìn)入相關(guān)的STM8系列主要。產(chǎn)品系列STM8A/stm8aSTM8L超低功耗產(chǎn)品系列:om/stm8lSTM8S標(biāo)準(zhǔn)產(chǎn)品系列:/

10、stm8s9 / 882 STM8 集成開發(fā)環(huán)境簡介2 STM8 集成開發(fā)環(huán)境簡介在開發(fā)前,首先要準(zhǔn)備好相應(yīng)的C 編譯器。本章介紹了當(dāng)前幾個(gè)主流的 STM8集成開發(fā)環(huán)境??筛鶕?jù)自己的需要,選擇不同的集成開發(fā)環(huán)境。2.1 ST TOOLSETST TOOLSET 是 ST 提供的微控制器開發(fā)套件。ST TOOLSET 包括兩部分Visual Develop (STVD)和 ST Visual Programmer (STVP)。支持 STM8 全系列的開發(fā)。:STST Visual Develop (STVD)是 ST 微控制器的集成開發(fā)環(huán)境。主要是面向 ST 的 8 位微控制器產(chǎn)品。STVD

11、可以創(chuàng)建,調(diào)試以及燒錄 ST 微控制器。STVD 提供了一個(gè)免費(fèi)的匯編編譯器。用戶可使用匯編語言直接在此環(huán)境中(STVD)編寫匯編程序。ST Visual Programmer (STVP)是ST 提供的用于生產(chǎn)或批量的燒錄。ST TOOLSET 可從 ST:上:。或者嘗試直接從下面的連接10 / 88/SOFTWARE RESOUR/TOOL/TOOLSET/sttoolset.zip本章提示:ST TOOLSET:ST 公司提供的免費(fèi) IDE,支持匯編語言編程??梢酝ㄟ^ 的方式,支持第 編譯器( Cosmic Software 公司的 C 編譯器)COSMIC:Cosmic Softwar

12、e 公司提供的一款商業(yè) IDE。目前,提供了一個(gè)免費(fèi)的 32K代碼大小限制的版本, 若需要編譯 32K 以上的, 則需要 (于 ST TOOLSET 使用)。IAR:IAR 公司提供的商業(yè) IDE。目前,提供了兩個(gè)個(gè)免費(fèi)版本:一個(gè)是的 8K 代碼大小限制版本;另一個(gè)是 30 天評(píng)估的版本。2 STM8 集成開發(fā)環(huán)境簡介在安裝完成后,一般會(huì)在桌面產(chǎn)生兩個(gè)快捷方式:ST Visual Develop 和 STVisual Programmer。ST Visual Develop(STVD):編輯調(diào)試燒錄。ST Visual Programmer(STVP):燒錄。2.2 COSMICCosmic

13、Software 公司有著 20 多年的歷史了。其產(chǎn)品也贏得了一些著名廠商的認(rèn)可 。 Cosmic Software 公司(Cosmic Software Inc.)的 Cosmic C 編譯器(Cosmic C compiler)及全 套嵌入開發(fā)工具支持 STM8 系列產(chǎn)品的開發(fā)。Cosmic 產(chǎn)品包括 C 交叉編譯器、匯編、連接器、 ANSI 庫、仿真器、硬件調(diào)試器和易于使用的集成開發(fā)環(huán)境(IDEA)。目前,Cosmic Software 公司提供了 16K 和 32K 代碼大小限制的全功能的免費(fèi)。此可從其公司上免費(fèi),是:. 。在進(jìn)入頁面后,一般會(huì)出現(xiàn)一個(gè)頁面,如下圖所示。按照其要求填寫,

14、提交后,便可獲得一個(gè) C 編譯器的連接。11 / 882 STM8 集成開發(fā)環(huán)境簡介./download_stm8_32k.或者嘗試直接從下面地址32K 代碼大小限制的版本:(不需要了).com/cxstm8 32k.exe (32K 代碼限制版本,免費(fèi))./cxstm8_16k.exe (16K 代碼限制版本,免費(fèi))注意:License 文件:若要使用免費(fèi)的C 編譯器,還需要向Cosmic Software 公司申請一個(gè) license 文件。并且限制一臺(tái)計(jì)算機(jī)對應(yīng)一個(gè) license 文件。獲得 license 的 2 種方法:第法:在安裝過程中,安裝向?qū)?huì)引導(dǎo),獲得 license 文件

15、第二種方法:通過直接發(fā)送的方式,獲得 license 文件下面詳細(xì)介紹兩種獲得獲得 license 文件的方法。第法:通過安裝向?qū)Й@得 COSMIC 的license 文件:COSMIC C 編譯器在安裝過程中,出現(xiàn)下圖的提示。提示創(chuàng)建桌面圖標(biāo)和申請使用協(xié)議??梢赃x擇“Register your license”來申請 license 文件,選擇“Next”。12 / 882STM8 集成開發(fā)環(huán)境簡介接著會(huì)彈出下面的框,意思是獲得一個(gè)免費(fèi)的版本,收到一個(gè) license 文件后,就可使用該。繼續(xù)!根據(jù)要求填寫下面的會(huì)啟動(dòng)計(jì)算機(jī)系統(tǒng)默認(rèn)的郵件信息,要用英文填寫完整。選擇”Register by”

16、,此時(shí),發(fā)送申請協(xié)議的郵件。注意,帶“*”號(hào)的一定要填寫。在Country 中一定要注明 China。建議用英文書寫。特別注意是,申請時(shí)發(fā)送ernet Explorer 的菜單“工具的程序,是 WINDOWS 默認(rèn)的程序??梢酝ㄟ^ ernet 選項(xiàng)”來查看或指定系統(tǒng)默認(rèn)的郵件程序。13 / 886 789:;bpK| / = ?8 ! 7=/7= E/ = ?8 !#$.!9K/ = ?8 |!k- 7=/7= %&hW- 7=/ WE)8 67/F!FGA)F7=/El(hH 2EImGH)KLno:VDE #$%$ BC)b hS $ * RS k 7=/7= E- J - h W ) 8

17、 67/F!FGA) 7 :B -,= ? 8E , 2STM8 集成開發(fā)環(huán)境簡介打開郵件程序,編寫一個(gè),以獲得一個(gè) lincense.lic 文件。下面是一個(gè)例子:說明:Registration Information for:需要填寫完整準(zhǔn)確無誤Product Information:信息需要通過運(yùn)行 lmreg32k.ext 來獲得將獲得的 license.lic 文件拷貝到安裝目錄下的 license 目錄下即可。一般地,默認(rèn)目錄為C:Program FilesCOSMICCXSTM8_32Klicense。這樣就可以使用 C 編譯器了。15 / 88The information b

18、elow should be sent to HYPERLINK mailto:stm8_32kcosmic.fr stm8_32kcosmic.frto obtain a license for this product Registration Information for:User: WangCompany: Company NameAddress: PuDong South RouDong ,Shanghai 200120, P.R.China Country: ChinaPhone:Fax:Product Information:PRODUCT=STM8 32K VER HOSTI

19、D=001b7886a9cfUSER=Administrator DISPLAY=SH HOSTNAME=SHPC DISK_SERIAL_NUM=608e97ea標(biāo)題: STM8 32k License Request收件人: HYPERLINK mailto:stm8_32kcosmic.fr stm8_32kcosmic.fr2 STM8 集成開發(fā)環(huán)境簡介COSMIC 公司為用戶提供了一個(gè)集成的開發(fā)環(huán)境(IDE),其運(yùn)行后界面如下圖所示:建議:建議將COSMIC C 編譯器于 ST TOOLSET(STVD)中,使用 ST 提供的集成開發(fā)環(huán)境 STVD 來進(jìn)行的調(diào)試開發(fā)。16 / 882

20、 STM8 集成開發(fā)環(huán)境簡介2.3 IARIAR Systems 推出開發(fā)工具“STM8 系列設(shè)計(jì)工作臺(tái)”(EWSTM8),支持 8位微控制器市場主流的 STM8(STM8A,STM8L,STM8S)系列產(chǎn)品。IAR EWSTM8設(shè)計(jì)工作臺(tái)提供一整套開發(fā)工具,包括一個(gè)項(xiàng)目管理器、編輯器和項(xiàng)目創(chuàng)建工具(C 語言編譯器和器)。該工作臺(tái)還為開發(fā)提供調(diào)試功能,可以連接意法半導(dǎo)體價(jià)格低廉的在線調(diào)試器 ST-LINK 以及先進(jìn)的高端仿真器 STice。I提供代碼限制和天評(píng)估版的編譯器。可從 上直接。安裝完成之后,運(yùn)行 IAR 集成開發(fā)環(huán)境,其界面:17 / 883.1 使用 STVD 創(chuàng)建匯編項(xiàng)目3.1.

21、1 新建從開始菜單啟動(dòng) ST Visual Develop ( STVD )。在 STVD 中選擇菜單“ FileNew Workspace”,新建一個(gè)工作區(qū)。如下圖所示:在出現(xiàn)如下圖的框中,選擇“Create workspace and project”,如下圖所示:18 / 88本章提示:本章主要介紹如何使用不同的編譯器建立 STM8 的應(yīng)用項(xiàng)目STVD:創(chuàng)建一個(gè)匯編語言項(xiàng)目COSMIC:創(chuàng)建一個(gè) C 語言項(xiàng)目IAR:創(chuàng)建一個(gè) C 語言項(xiàng)目點(diǎn)擊“確定”,出現(xiàn)如下框,在 Workspace filename 中輸入workspace 名字:選擇 workspace 所要保存的路徑:c:stm

22、8asm。demo,在workspace filename 完成后,點(diǎn)擊“OK”, 在 project filename 中輸入 project 名字: demo。在 Project location 中選擇 project 保存的路徑,一般與workspace 保存在同一個(gè)目錄下。選擇工具鏈 Toolchain: ST Assembler Linker,ST Assembler 是 ST 提供的免費(fèi)的匯編編譯器。Toolchain Root 一般是默認(rèn)安裝的。如果在 ST TOOLSET 安裝過程中改變了安裝目錄,需要確認(rèn)安裝路徑。相關(guān)設(shè)置:19 / 88在 project filename

23、 完成后,點(diǎn)擊“OK”,在 MCU Selection號(hào)。可以在空白框中輸入型號(hào)中的部分字符可快速篩選目標(biāo)型號(hào)。框中,選擇MCU 型:至此,workspace 和 project 創(chuàng)建完成。完成后界面如下圖所示:20 / 88STVD 在項(xiàng)目中自動(dòng)添加了 main.asm, map.asm 和map.inc 文件。其說明如下:從C:Program FilesSTMicroelectronicsst_toolsetasminclude (默認(rèn)安裝目錄) 找到相關(guān)MCU 型號(hào)的寄存器定義文件到當(dāng)前工程目錄下(本例中用到 STM8S207C_S.ASM和 STM8S207C_S.INC),并添加到工

24、程項(xiàng)目中。添加后的 workspace 如下圖所示:用戶需要根據(jù)自己的要求,修改 main.asm 和errupt.asm 文件。在修改中斷時(shí),先在中斷向量表中找到對應(yīng)的中斷地址,把 NonHandlederrupt 中斷名字修改成自定義的中斷名字,其他部分不需要修改( $82000000 是編譯器定義的地址)。然后使用一個(gè)errupt 關(guān)鍵字定義一個(gè)中斷函數(shù)。21 / 88文件說明main.asm基本的程序架構(gòu)文件中包含了中斷向量和中斷函數(shù)(NonHandlederrupt),用戶可根據(jù)此進(jìn)行參考修改清RAM0,RAM1 和清堆棧程序。用戶可刪除此部分程序,自己進(jìn)行變量的初始化。建議在程序開

25、始時(shí)對自己定義的變量初始化。map.asm-定義了段的名字和地址(ram0, ram1, stack, eeprom, rom, vectit)map.inc-定義了段(ram0,ram1,stack)的起始和結(jié)束地址下面是一個(gè)自定義中斷函數(shù)的例子:說明:dc.l $82000000+main,復(fù)位向量在復(fù)位后直接跳轉(zhuǎn)到 main 處執(zhí)行。22 / 88;自定義中斷函數(shù)errupt My_errupt_Name My_errupt_Name.l;中斷處理代碼;iret;中斷向量表 segment vectitdc.l $82000000+main; reset dc.l $82000000+

26、My_errupt_Name ; trap;其他中斷; end修改 main.asm,并說明如下:23 / 88stm8/; 第一行必須保留而且要頂格寫.指定目標(biāo)單片機(jī)的指令集;* 包含文件#include map.inc #include stm8s207c_s.inc;* 常量定義#define MYDF1 3T1 EQU 2;/* ram0 區(qū)變量定義segment ram0;從此行以后是 ram0 變量區(qū) MY_RAM0_VAR1DS.B 1;保留 1 個(gè)字節(jié)的變量空間;/* ram1 區(qū)變量定義segment ram1;從此行以后是 ram1 變量區(qū) MY_RAM1_VAR1DS.B

27、 128 ; 定義 128 個(gè)字節(jié)的一組變量空間;* 主程序(ROM)segment rom ;從此行以后是 rom 代碼區(qū) main.l; 初始化main_loop.l;JRA main_loopSubroutine.lRet;* 中斷程序errupt NonHandlederrupt NonHandlederrupt.lIret;*中斷向量segment vectitdc.l $82000000+main; reset dc.l $82000000+NonHandlederrupt; trap dc.l $82000000+NonHandlederrupt; irq0;(此處省略)dc.l

28、 $82000000+NonHandlederrupt; irq28dc.l $82000000+NonHandlederrupt; irq29endInclude 區(qū)常量區(qū)RAM0 變量區(qū)RAM1 變量區(qū)主程序區(qū)子程序區(qū) 中斷程序區(qū)中斷向量3.1.2 編譯源程序編輯完成后,可選擇菜單“BuildRebuild All”,編譯工程。如下圖所示:若源程序正確無誤,會(huì)顯示如下:若要查看編譯后的程序代碼的大小,可找到工程目錄下的 Debug 目錄,在 Debug 目錄下有個(gè).map 文件。本例是 stm8asm.map,如下所示:24 / 88用文本編輯器打開.map 文件,可查看使用的資源的大小。

29、在stm8asm.map 文件里,本例的代碼地址范圍是:rom了 ram0,ram1,rom,stack,eeprom,rom 等的使用情況。byte from8080 to81F5。程序代碼大小是:81F5 8080 = 175(HEX) = 373 個(gè)字節(jié)3.1.3 調(diào)試本節(jié)介紹在 ST Visual Develop 環(huán)境中的調(diào)試說明。首先,先選擇調(diào)試與仿真的工具??赏ㄟ^菜單“Debug instrument設(shè)置,如下圖所示:Settings”來在彈出的框中,列表中列出了此開發(fā)環(huán)境支持的所有工具。常用的調(diào)試工具是Swim Rlink 和 Swim ST-LINK,Simulator 是仿真

30、。25 / 88可從菜單選擇”Debug Start Debugging”,可進(jìn)入調(diào)試狀態(tài),如下圖所示:可通過 View 的下拉菜單的菜單項(xiàng)進(jìn)行不同的顯示,。進(jìn)入調(diào)試狀態(tài)后,界面如下圖所示:26 / 883.1.4 燒錄使用 STVD錄選擇 Tools Programmer ,出現(xiàn)如下燒錄界面。請確認(rèn)燒錄的選擇正確的硬件設(shè)備。Device 型號(hào),Settings 選項(xiàng).1對于 STM8 系列單片機(jī)的 Hardware hardware 可選擇 RLINK,ST-LINK,STICE等工具進(jìn)行燒錄?!癛un STVP”可以直接運(yùn)行 STVP,若不想使用 STVD 的編程器。.2 Memory A

31、reas 選項(xiàng)27 / 88Memory 可以選擇 DATA MEMORY 和PROGRAM MEMORY。 DATA MEMROY:EEPROM 數(shù)據(jù)PROGRAM MEMORY: 程序點(diǎn)擊Add可以添加要燒錄的目標(biāo)文件,.3 OPTION BYTE 選項(xiàng)根據(jù)應(yīng)用配置合適的 OPTION BYTE 選項(xiàng)28 / 88.4 Program 選項(xiàng)配置完成之后,點(diǎn)擊 Start 即可可以進(jìn)行燒錄使用 STVP 燒錄可 以 運(yùn) 行獨(dú)立 的 燒錄(STVP) , 運(yùn) 行“ 開 始” ST:ST Visual ProgrammerToolsetDevelopment Tools ST Visual Pr

32、ogrammer。29 / 88.1 燒錄配置運(yùn)行 Configure Configure ST Visual Programmer,:Hardware: 燒錄工具Port: USBProgramming mode: SWIM Device: 選擇要燒錄的型號(hào)打開要燒錄的目標(biāo)文件 File OpenDATA MEMORY: EEPROM 數(shù)據(jù)區(qū).2 配置 OPTION BYTE 選項(xiàng)30 / 8887,2 :2=- !% &R Y!% &R : 87, -Y=E Ta9 !% &R =-)ZeDED !%|ZE -871/ 234)Hc0EHc -w9ERS*Dq-w9E6!7g!7. vgF

33、M2 h9!89768) x889768) b88976) Jb-.:7 ;) C# ;81) c#- 2 4) $d234) 0e&2/ ./ bHchH RS*.DE-= - , 3.1.5 匯編語言相關(guān)說明匯編源代碼行格式程序的第一行,必須頂頭寫一條 stm8,STVD 會(huì)調(diào)用 stm8.tab 描述文件。寫錯(cuò)或不寫都不能編譯。匯編源代碼行的一般格式如下:一個(gè)源代碼行的例子,如下:下面對源代碼行進(jìn)行一些說明:在匯編語言中,任何超過 30 個(gè)字符的 label 都會(huì)被編譯器截短。并且會(huì)給出一個(gè)警告。若截短后兩個(gè)符合同名,則會(huì)報(bào)一個(gè)錯(cuò)誤。Lable 的長度大小,默認(rèn)地,是 WORD 類型(2

34、 個(gè)字節(jié)長)。也可以通過加后綴來指定label 的長度。例如:32 / 88labequ 0; word-size label (default) label1.b equ 5; byte-size labellabel2.l equ 123; long label segment byte at: 80 rambytes; force the size of the label to bytes count ds.b; byte-size labelpoer ds.w; byte-size label wiword-size; spaceat this address; 字節(jié) label,在

35、此地址保留一個(gè) word-size 空間.b for byte.w for word.l for longlabel: opcode operand ;commentstm8*bq- 78D7*78D7 -ghT &* 78D7 -gh 78D7 TG %EG % a & ghAeEab“”H 2 ) l m , J E R S h! HGT!S YclmGT!S ,JEab , ;+ = * op3 *;P = * oqp3 * 2Q& rsntu 2Q#; vw3sntu 2Q#* opx3y6$78L&+ U&+VWE,/ ?R(7&+9D XLB8/H&+YWLT7V&+V(V(L9

36、*.K-.1*D 9 *.K-.1D 9 L05M,J N9 J ; HLIJ & JO * & 9 *O & 9 9 .K-.1JD 9 J 6 D98 L05M, N9 ; HLI & J & 9 J -_J-o)_”E_J”bWZ L66q_J Z LL6v_J _J Z LLHgqGkMygqGf-5Mz L66 0q8 C0El(-MygfEwxi i 9. 2 RS S% a a -E RS S% |Yc4)*B)hHghH-BB-FB-CQ)_o)=3 qG-)_OqG-CQ)_CQ)_ -88CQ)_ -9CQ)_ -9CQ)_ -98CQ)_ -9)CQ)_ -9)CQ)_

37、-9=bc=mB-LEm-%-$n.H8PmEm- :M0-U8_EW3V-m-aE2 4#*!+ -*Y E wxi .l|YcH-“3”-DEE:%+ T DEE j|i 5BH6eMU-:ME|Yc + -w9 Y)_jQe+ 3J-Y-chHE5-MNmV|Yc +&+$ a + Y3-,JbW f-+&=-” , mam-mVHH17IZ2H6H12IZ2 )_ 9 WH12IZ2H6 .)_0H4-2,RIZ2b$FL*-Bo=m o=B-:jQ)_D E)_b-m-CQ)_aDE)_Em-CQ)_aDE)_9 m-H = -BCQ)_-0E)_2=-=v-+$+lYcY=-YT

38、E+ Yco +-I)_o-5+$ 8& -)_k 9- )_T 9 9 jQe f ERS|Yc S% YmB-)_k + -5=-)_E j|i bW +&+$+&R$! +!%S a %SE+ |Ycl- + |YcJ-w9 :MYcjQ nUH6U3E-,JbW-Yf +&+$+3JfnH3JfnHII3JH3JHII3JH3JHIIk:MDTfY-YEa * *6* *9 *K v+& *+& !C*+$ *L+ *LKc *-DJ=H/ICD-E*-qRDEW:q %)C* Options”在出現(xiàn)的框中選擇”Toolset” 選項(xiàng)卡. 再選擇下拉菜單,選中”STM8S Cosmic

39、”。設(shè)置編譯器的安裝路徑。然后選擇”確定”。本例中選擇的”Root path” 是:C:Program FilesCOSMICCXSTM8_32K至此,就完成了 COSMIC C 編譯器的設(shè)置完成。注意:很多人在此很是疑惑,點(diǎn)擊“確定”后,會(huì)彈出一個(gè)提醒窗口。它只是提醒你是否指定了正確的路徑。如果你確認(rèn)路徑無誤后,不要管那個(gè)提醒就可以了。在創(chuàng)建一個(gè) “new project”時(shí),在 toolchain 中選擇 COSMIC 時(shí),Toolchain Root 會(huì)自動(dòng)關(guān)聯(lián)顯示出此處設(shè)置的路徑。就是能讓 STVD 能找到COSMIC C 編譯器。若關(guān)聯(lián)不對,則需要重新設(shè)置或重新指定。39 / 883

40、.2.2 新建在主菜單條中,選擇 File New Workspace在New Workspace 窗口中,點(diǎn)擊 Create workspace and project 圖標(biāo),然后點(diǎn)擊 OK1.在Workspace Filename 字段中,輸入一個(gè) workspace 名字選擇 workspace 和項(xiàng)目保存的2.結(jié)果:STVD 的Workspace 窗口包含一個(gè) workspace 圖標(biāo)工作目錄中包含文件: .stw, .wsp and .wed。40 / 883. 在 Project filename 字段中輸入一個(gè)項(xiàng)目名字在 Project Location 字段中選擇一個(gè)工程保存的

41、。在 Toolchain 列表框中,選擇 STM8 Cosmic。默認(rèn)地,使用workspace 使用的4.5.6. 在 Toolchain Root 字段中,輸入路徑。然后點(diǎn)擊 OK在MCU Selection 窗口中,選擇需要的MCU。也可以通過 Project Setting 窗口來選擇MCU。點(diǎn)擊OK保存workspace 和 project41 / 88main.c 和stm8_errupt_vector.c 是自動(dòng)添加的.用戶只需要根據(jù)不同的 MCU 的中斷向量不同填寫相應(yīng)的中斷處理函數(shù)即可.打開“Project-Settings.”,可以對當(dāng)前的工程進(jìn)行設(shè)置,包括 C 編譯器、連

42、接器等選擇。3.2.3 編譯選擇菜單“BuildRebuild All”,編譯當(dāng)前的工程。如下圖所示:42 / 88若程序正確無誤,會(huì)顯示如下:若要查看編譯后的程序代碼的大小,可找到工程目錄下的 Debug 目錄,在 Debug 目錄下有個(gè).map 文件。3.2.4調(diào)試首先要設(shè)置好調(diào)試工具,可通過菜單“Debug instrument下圖所示:Settings”來設(shè)置,如在彈出的ST-LINK。框中,列表中列出了此開發(fā)環(huán)境支持的所有工具。一般常用工具是 Swim可從菜單選擇”Debug Start Debugging”,可進(jìn)入調(diào)試狀態(tài),如下圖所示:43 / 883.2.5 燒錄請參考 STVD

43、 匯編語言程序設(shè)計(jì)章節(jié)中的“燒錄”。因界面一樣,操作類似。3.2.6COSMIC C 語言相關(guān)說明COSMIC C 語言項(xiàng)目設(shè)置通過菜單“ProjectSetings”,可以對當(dāng)前工程進(jìn)行項(xiàng)目設(shè)置。包括編譯器選項(xiàng)和連接選項(xiàng)等?!癈 Compiler”選項(xiàng):說明:Memory Ms:通過下來菜單,可選擇不同的器模式。如下圖:44 / 88器模式說明如下:代碼小于 64KSTM8 編譯器支持兩種器模式。函數(shù)指針和數(shù)據(jù)指針默認(rèn)是near 指針(2 個(gè)字節(jié))-stack short (mods0) 全局變量默認(rèn) short range 類型。 任何在 long range 范圍的全局變量必須明確地用n

44、ear 來,除非通過指針。-Stack Long (modsl0) 全局變量默認(rèn)為 long range 類型。任何在 short range 類型中的變量必須明確地用tiny 來代碼大于 64K STM8 編譯器支持兩種。器模式。函數(shù)指針默認(rèn)是far 指針(3 個(gè)字節(jié)),數(shù)據(jù)指針默認(rèn)為near 類型(2 個(gè)字節(jié)),除非用far 明確地。Stack Short (mods)全局變量默認(rèn) short range 類型。 任何在 long range 范圍的全局變量-必須明確地用near 來,除非通過指針來。-Stack Long (modsl0) 全局變量默認(rèn)為 long range 類型。任何

45、在 short range 類型中的變量必須明確地用tiny 來。“Linker”選擇:45 / 88說明:Std. libraries:COSMIC C 編譯器提供了整數(shù)和浮點(diǎn)運(yùn)算庫??赏ㄟ^選擇實(shí)現(xiàn)。COSMIC 會(huì)自動(dòng)關(guān)聯(lián)相應(yīng)的函數(shù)庫。Start-up file: 程序跳轉(zhuǎn)到 main 函數(shù)前執(zhí)行的啟動(dòng)代碼。和 Float 來從“Category”下拉菜單中,可以選擇“Input”來查看段的配置情況、lkf 文件以及中斷文件等??筛鶕?jù)需要,進(jìn)行自定義設(shè)置。一般地,默認(rèn)的設(shè)置就可以滿足要求了。46 / 88COSMIC C 語言段定義(Section)COSMIC C 編譯器使用默認(rèn)預(yù)定義的

46、段輸出不同部分的機(jī)器碼。默認(rèn)段是:COSMIC C 語言啟動(dòng)程序COSMIC 有一個(gè)啟動(dòng)程序,就是在單片機(jī)復(fù)位之后,在程序跳轉(zhuǎn)至 main 函數(shù)之前,插入一段匯編代碼做一些初始化的動(dòng)作。其包括:段的初始化(如 bss)-拷貝 ROM 到RAM(如果程序中需要的話,一般是指 COSMIC 內(nèi)嵌的的拷貝函數(shù))堆棧指針初始化-47 / 88段描述.text可執(zhí)行代碼.const文本字符和常數(shù).fconst大常量(far).data初始化變量(near).bss未初始化變量(near).bsct零頁內(nèi)的初始化變量(tiny, 默認(rèn)).ubsct零頁內(nèi)的未初始化變量(tiny,默認(rèn)).fdata大變量(

47、far).eepromEEPROM 內(nèi)任何變量(eeprom).bit位變量編譯器提供了幾個(gè)啟動(dòng)文件,對數(shù)據(jù)進(jìn)行初始化設(shè)置??蛇x擇的文件及初始化說明,如下所示:數(shù)據(jù)類型和默認(rèn)為 2 個(gè)字節(jié)。ShortLong默認(rèn)為 4 個(gè)字節(jié)tiny 指針(short range)默認(rèn)為 1 個(gè)字節(jié);near 指針(long range)默認(rèn)為 2 個(gè)字節(jié);far 指針默認(rèn)為 3 個(gè)字節(jié)48 / 88下面是 crtsi0.sm8 反匯編之后的代碼:若不想讓COSMIC C 編譯器來進(jìn)行初始化,如何來設(shè)置呢?也就是說,在單片機(jī)復(fù)位后,直接跳轉(zhuǎn)至main 處執(zhí)行。在 main 開始處,按照自己的設(shè)計(jì),做一些變量和

48、外設(shè)等的初始化動(dòng)作。49 / 880 x8084 0 x0CLR(0 xff,SP)CLR(0 xff,SP) 0 x8086 0 x94LDWSP,XLDWSP,X0 x8087 0 x90CE8080LDWY,0 x8080LDWY, idesc 0 x808b 0 xAE8082LDWX,#0 x8082LDWX,#0 x80820 x808e 0 xF6LDA,(X)LDA,(X)0 x808f 0 x2720JREQ 0 x80b1JREQ 0 x80b10 x8091 0 xA560BCPA,#0 x60BCPA,#0 x600 x8093 0 x2717JREQ 0 x80acJ

49、REQ 0 x80ac 0 x8095 0 xBF03LDW0 x03,XLDWc_x,X0 x8097 0 xEE03LDWX,(0 x03,X)LDWX,(0 x03,X)0 x8099 0 xBF06LDW0 x06,XLDWc_y,X0 x809b 0 xBE03LDWX,0 x03LDWX,c_x0 x809d 0 xEE01LDWX,(0 x01,X)LDWX,(0 x01,X)0 x809f 0 x90F6LDA,(Y)LDA,(Y)0 x80a1 0 xF7LD(X),ALD(X),A0 x80a2 0 x5CINCW XINCW X0 x80a3 0 x905CINCW YI

50、NCW Y0 x80a5 0 x90B306CPWY,0 x06CPWY,c_y0 x80a8 0 x26F5JRNE 0 x809fJRNE 0 x809f0 x80aa 0 xBE03LDWX,0 x03LDWX,c_x 0 x80ac 0 x1C0005ADDW X,#0 x0005ADDW X,#0 x00050 x80af 0 x20DDJRT0 x808eJRT0 x808e 0 x80b1 0 xAE0000LDWX,#0 x0000LDWX,#0 x0000 0 x80b4 0 x2002JRT0 x80b8JRT0 x80b8 0 x80b6 0 xF7LD(X),ALD(X

51、),A0 x80b7 0 x5CINCW XINCW X0 x80b8 0 xA30009CPWX,#0 x0009CPWX,#0 x00090 x80bb 0 x26F9JRNE 0 x80b6JRNE 0 x80b6 0 x80bd 0 xAE0100LDWX,#0 x0100LDWX,#0 x0100 0 x80c0 0 x2002JRT0 x80c4JRT0 x80c4 0 x80c2 0 xF7LD(X),ALD(X),A0 x80c3 0 x5CINCW XINCW X0 x80c4 0 xA30100CPWX,#0 x0100CPWX,#0 x01000 x80c7 0 x26F

52、9JRNE 0 x80c2JRNE 0 x80c20 x80c9 0 xCD80CFCALL 0 x80cfCALL main 0 x80cc 0 x20FEJRT0 x80ccJRT_exit在 STVD 開發(fā)環(huán)境中,啟動(dòng)文件的設(shè)置:(project-Setttings.)STM8 復(fù)位后直接跳轉(zhuǎn)至 main 處執(zhí)行,可按如下步驟修改:從 Start-up file 處的下來菜單中,選擇“None”修改復(fù)位函數(shù):將原來的0 x82, (errupt_handler_t)_stext, /* reset */修改為 0 x82, (errupt_handler_t)main, /* reset

53、 */修改外部函數(shù):-將原來的 extern void _stext(); /* startup routine */修改為 extern void main();-/* startup routine */注意:確保在變量使用前,都做了正確的初始化。50 / 88 ! wxi! 2oIYcEc8/ ac-8/ IYcoIRExRYcEoab; 8F =877 A/,D,Fd(bA8/ d7- A 8*8d(bA8/ I-s* nL -7 mV.5E5zE5HDNfLmV-5Q N*G J V 9?+A ! V N*)J 9 N! 9 9 9 J !* 9 ! 9 9 9!9 &9 V +GG

54、 ! *+ ! J C599599J V 6 CV *8 XX 6 BV 8 V ! & 9 !& 6 XX 8 V COSMIC C 語言在 RAM 中運(yùn)行程序可使用 COSMIC 中的函數(shù)_fctcpy 將 FLASH 中的代碼代碼拷貝 RAM 中,并運(yùn)行 。_fctcpy 從 FALSH 中拷貝一段可移動(dòng)代碼段到RAM 中。_fctcpy 尋找 linker 定義的描述符( 此描述符是在 RAM 中定義段的第一個(gè)字符) 。本例子在段.CODE_IN_RAM。所以地一個(gè)字符是C。中定義了一個(gè)RAM需要在程序中應(yīng)用_fctcpy(char name);在Ram 中創(chuàng)建一個(gè).CODE_IN_R

55、AM 段。并在 Option 中輸入-ic.CODE_IN_RAM 表示在RAM 中定義一個(gè) CODE_IN_RAM 的段。程序可從此起始地址運(yùn)行。_fctcpy 函數(shù)使用此段的名字的第一個(gè)描述符C。-ic 表示標(biāo)記這個(gè)段為可移動(dòng)的段??蓪?FLASH 中的代碼移動(dòng)到此。在程序代碼中完成函數(shù):打開 project-settings-Linker 如下圖所示配置:53 / 88#pragma section (CODE_IN_RAM) functions()var1 = 0 x99; var2 = 0 x88; var3 = 0 x77;routine()var1+; var2+; var3+;

56、#pragma section ()abW ! & 6: BCD J=H /IH&,7-D=9B L!,;,89(L%8 (/ L!,;,89(L%8 (/ ” , J *QQ+&6J 8# 9 6,7(.128 &968* V N V N+ V N% 968*+ # 9 6868&6,8!| 96,7(.1280N2312&968! 12 0N &9 23968! 12 0N 9 23DJ 6*86$9$86$9$86$9$86$9$8 設(shè)置為:chex fi o $(OutputPath)$(SName).hex $(OutputPath)$(SName).sm855 / 883.3 使用

57、 IAR 創(chuàng)建 C 語言項(xiàng)目3.3.1 新建創(chuàng)建一個(gè) Workspacea)首先,創(chuàng)建一個(gè) workspace。選擇菜單 FileNewWorkspaceb) 創(chuàng)建一個(gè) Project1)創(chuàng)建一個(gè)新的工程,選擇 ProjectCreate New Project,創(chuàng)建新工程的所示:框,如下圖Tool chain 默認(rèn)是 STM8 Series。 無需再選擇。2)3)在 Project templates 中選擇“Empty project”4)彈出 Save As框,選擇 project 保存的路徑,并輸入 project 的名字在Workspace 窗口中,顯示如下56 / 88有Debug

58、 和 Release 兩個(gè)配置。默認(rèn)配置是 Debug。5)在添加文件到工程中之前,先保存 workspace。選擇 FileSave Workspace, 指定要保存的路徑,并輸入 workspace 的名字。一個(gè) workspace 文件的擴(kuò)展名是 eww. 此文件列出了添加到 workspace 中的所有的 project。相關(guān)當(dāng)前會(huì)話信息,比如 windows 的保存路徑和斷點(diǎn)保存于 projectssetttings 目錄下。添加文件到工程c)可選擇 ProjectAdd Files 選擇要添加的C 文件。找到相應(yīng)MCU 型號(hào)的頭文件,拷貝到當(dāng)前的工程目錄中。默認(rèn)地,頭文件在 IAR

59、 安裝目錄 inc 下:C:Program FilesIAR SystemsEmbedded Workbench 6.0 Kickstartstm8inc。本例中使用了 iostm8s105s6.h。編寫一個(gè)簡單的 C 程序:57 / 88 8=” , ! EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE!# $9*GTJ$! U9; ; EEEEEEEEEEEEEEEEEEEEEEEEEEE!99 ,MR,9&9698,MR,R(31 V N! &,L0V&24-.1 V *TF ! 9 UL7698L(1 YV N(! 7!L(,1* YV N(! LJL!L(,1

60、 V N! 7 9 F ! 9 -698-L4,1 V N! ,9& - V*T !-211 V N,*! ,9& - 9 !-211M V N%)! ,9& - 9 !-1Options,或者在 Workspace 窗口,選中 project 名字,右擊選擇選擇 “Options”在Category 中,選擇“General Options”,如圖:在應(yīng)的 MCU 型號(hào)。其他選擇默認(rèn)。的Device 中,選擇相1)60 / 88/* Includes*/#include iostm8s105s6.h/* External variables*/extern unsignedms_count;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論