STM8是STMicroelectronics的一系列8位微控制器,已成為成本敏感型產(chǎn)品開(kāi)發(fā)微控制器的常見(jiàn)選擇。該IC不僅價(jià)格便宜,而且還包含許多功能和選項(xiàng),使其適用于許多不同的應(yīng)用。例如,STM8S系列控制器(我們將在本教程系列中學(xué)習(xí))是通用控制器,但還有其他系列,例如用于汽車設(shè)計(jì)的STM8A和用于低功耗電池供電設(shè)計(jì)的STM8L,它們擴(kuò)展了這些控制器的應(yīng)用。
在本系列教程中,我們將學(xué)習(xí)如何對(duì)STM8S微控制器,更具體地說(shuō)是STM8S103F3P6進(jìn)行編程。開(kāi)始使用這個(gè)特定部件號(hào)的原因僅僅是因?yàn)樗男詢r(jià)比因素。喜歡??!只需0.25美元(約20盧比),我們就可以得到一個(gè)8位微控制器,帶有16Mhz內(nèi)部振蕩器、8kB閃存、10位ADC、UART、SPI和I2C。誰(shuí)不感興趣?此外,STM8S103F3P6廣受歡迎,因此作為初學(xué)者,如果您需要教程之外的幫助,您將獲得足夠的支持。
選擇硬件和軟件開(kāi)發(fā)工具
現(xiàn)在我們已經(jīng)確定了微控制器,我們將不得不選擇硬件和軟件開(kāi)發(fā)工具來(lái)開(kāi)始我們的學(xué)習(xí)過(guò)程。有很多選擇,這里我選擇了可??以免費(fèi)使用且易于所有人使用的選項(xiàng)。
STM8S103F3P6開(kāi)發(fā)
ST 8 位微控制器的官方開(kāi)發(fā)板稱為 STM8 Discovery 套件,但我們將使用另一種低成本開(kāi)發(fā)板,您可以從當(dāng)?shù)毓?yīng)商或在線商店輕松找到。我們將在本教程中使用的STM8S103F3P6 開(kāi)發(fā)板的圖像 如下所示。
該板僅包含開(kāi)始開(kāi)發(fā)所需的最少組件。它對(duì)面包板友好,適用于緊湊型應(yīng)用。開(kāi)發(fā)板的內(nèi)部電路圖如下所示。
仔細(xì)看,您會(huì)注意到,除了 STM8S103F3p6 控制器之外,我們還有一個(gè)復(fù)位按鈕來(lái)復(fù)位控制器。一個(gè)電源 LED 和一個(gè)測(cè)試 LED 連接到 PB5(端口 B 引腳 5)和一個(gè) AMS1117 穩(wěn)壓器,將 USB 端口的 5V 轉(zhuǎn)換為控制器的 3.3V。如果需要,也可以使控制器在 5V 上運(yùn)行??刂破魃系牟煌考缦滤?。我們還有 4 個(gè)編程器引腳,即 3.3V、GND、SWIM 和 NRST,可用于輕松編程和調(diào)試我們的微控制器。
STM8S103F3P6 編程器
為了對(duì)我們的控制器進(jìn)行編程,我們將使用 便宜且易于在線獲得的ST-LINK v2 。此 ST-LINK v2 板有許多變體(金屬、塑料、金色、粉紅色、裸板),并且都具有相同的用途。我的如下所示,但您可以使用任何類型的 ST-LINK 編程器,引腳排列會(huì)有所不同,因此請(qǐng)確保您正確讀取外殼上的引腳排列。ST-Microelectronics 本身也有 ST-LINK V3,可用于一些嚴(yán)重的調(diào)試。我們暫時(shí)不會(huì)使用它,因?yàn)樗悬c(diǎn)貴,我們會(huì)為將來(lái)保存它。
STM8S103F3P6 IDE和編譯器
為 STM8S103F3P6 選擇正確的 IDE 和編譯器令人費(fèi)解,因?yàn)橛泻芏噙x項(xiàng)可供選擇。可用于 STM8 微控制器的官方工具如下圖所示。
在配置方面,我們有 STM8CubeMx,我嘗試了該軟件,這讓我完全失望。與 STM32Cube 不同, STM8Cube 不能自動(dòng)生成代碼。它只能為可視化目的生成引腳映射,如果您將代碼從一個(gè)控制器移植到另一個(gè)控制器,它可能會(huì)派上用場(chǎng)。除此之外,我不會(huì)使用它。所以在本教程系列中,我們不會(huì)使用它。
對(duì)于 IDE 和編譯器,我們有很多選項(xiàng)可供選擇。IDE 的前兩個(gè)選項(xiàng)是 IAR workbench 和 ST Visual Develop (STVD), 這兩個(gè)軟件都感覺(jué)像是來(lái)自 90 年代,但玩了一段時(shí)間后,我發(fā)現(xiàn) STVD 是一個(gè)不錯(cuò)的選擇,因?yàn)樗峭耆赓M(fèi)的。同樣,對(duì)于編譯器,我們將使用 Cosmic C 編譯器,同樣只是因?yàn)樗峭耆赓M(fèi)的。選擇這個(gè) IDE 和編譯器的另一個(gè)原因是,一旦我們熟悉了環(huán)境,應(yīng)該很容易使用 ST 的任何其他 8 位微控制器,而無(wú)需付出太多努力。我們將在本文后面介紹如何使用 Cosmic C 編譯器安裝和設(shè)置 STVD。
For Flashing, we will be using ST Visual Programmer (STVP), this tool will automatically get installed when we install STVD. It will be integrated in the IDE itself, helping us to quickly program and debug. The final software will be STMStudio which is an STM8 Monitoring software. The software can help with real-time debugging of STM8 and has some cool features like monitoring variable value, plotting graph, etc. I have not experimented enough with this software. And, at least for the first few tutorials, we won’t be using this software since we won’t need big debugging requirements.
STM8S 標(biāo)準(zhǔn)外設(shè)庫(kù): ST Microelectronics 提供了一組庫(kù)來(lái)簡(jiǎn)化 STM8S 微控制器的代碼開(kāi)發(fā),這個(gè)庫(kù)被稱為“標(biāo)準(zhǔn)外設(shè)庫(kù)”或簡(jiǎn)稱 SPL。該庫(kù)很酷,除了它是通過(guò)記住 STM8S/A 8 位系列中所有可能的控制器而編寫(xiě)的,而不僅僅是我們將使用的 STM8S103F3P6 控制器。因此,我們必須在這里和那里進(jìn)行一些調(diào)整以使其工作(稍后我將分享)。但是,我仍然認(rèn)為值得一試,因?yàn)樗梢允归_(kāi)發(fā)速度非常快,因此,我們將在我們的教程中使用它。
如果您不想使用該庫(kù),則必須直接訪問(wèn)控制器的寄存器或進(jìn)行裸機(jī)組裝編程。只要您有時(shí)間學(xué)習(xí)和使用它,這兩者都很有趣。我的想法是在 SPL 庫(kù)運(yùn)行良好的地方使用它,然后在需要時(shí)在寄存器和匯編級(jí)別上工作。讓我們盡量不要重新發(fā)明輪子!
如果我不提及 Arduino IDE 支持 STM8S,那么討論軟件選項(xiàng)將永遠(yuǎn)不會(huì)完整。是的,同樣的 STM8S103F3P6 板可以使用 Sduino從 Arduino IDE 直接編程,這要感謝 Michael Mayer。但是,該項(xiàng)目仍處于開(kāi)發(fā)階段,可能需要一些時(shí)間和社區(qū)支持 Sduino 才能提供完整的平臺(tái)支持。然而,就在玩 Sduino 的幾分鐘內(nèi),我開(kāi)始喜歡它,因此決定另外寫(xiě)一篇關(guān)于如何使用 Arduino 對(duì) STM8S 微控制器進(jìn)行編程的文章。準(zhǔn)備好后,我將在此處鏈接該文章。那篇文章將討論為什么以及為什么不應(yīng)該使用 Arduino IDE 對(duì)您的 STM8S 微控制器進(jìn)行編程。
下載所需軟件的
現(xiàn)在我們已經(jīng)決定了我們將用于本教程的軟件,讓我們繼續(xù)使用以下鏈接下載它們。所有軟件都可以免費(fèi)下載和使用,如果您還沒(méi)有在 ST 和 Cosmic 上注冊(cè)一個(gè)免費(fèi)帳戶,您只需注冊(cè)一個(gè)免費(fèi)帳戶即可。
ST 視覺(jué)開(kāi)發(fā) (STVD)
Cosmic C 編譯器
標(biāo)準(zhǔn)外設(shè)庫(kù)
STM8Cube Mx (可選)
STM8 的 STMStudio (可選)
設(shè)置 STVD 和 Cosmic C 編譯器
下載這兩個(gè)軟件后,只需按照屏幕上的說(shuō)明進(jìn)行安裝即可。我建議將它們保留在默認(rèn)目錄中以避免以后混淆。STVD IDE 將毫不費(fèi)力地安裝。對(duì)于 Cosmic C 編譯器,您必須在安裝過(guò)程中獲得免費(fèi)的許可證密鑰。您只需提供公司信息和 E-mail ID,如果您是學(xué)生,請(qǐng)?zhí)峒啊+@取許可證密鑰的過(guò)程是即時(shí)和自動(dòng)的,雖然設(shè)置說(shuō)明說(shuō)可能需要一兩天,但我一提交就自動(dòng)在我的電子郵件 ID 上收到了許可證密鑰,只要確保你檢查垃圾郵件。我的確認(rèn)電子郵件如下所示。
按照電子郵件說(shuō)明,只需復(fù)制 license.lic 文件并粘貼到安裝文件夾中的“l(fā)icense”子文件夾中。對(duì)我來(lái)說(shuō),路徑是 “C:\Program Files (x86)\COSMIC\FSE_Compilers\CXSTM8\License”。只需將文件粘貼到如下所示的位置
STM8S103F3P6 標(biāo)準(zhǔn)外設(shè)庫(kù)
如前所述,ST Microelectronics 提供名為 SPL 的庫(kù),可用于所有 8 位 STM8S/A 微控制器。您可以從 ST Microelectronics 下載原始 SPL 并進(jìn)行所需的更改,或者下載我的 STM8S103F3P6 SPL 庫(kù)并照此使用。我會(huì)推薦后者。
ST Microelectronics 的原始 SPL
STM8S103F3P6 聲壓級(jí)
當(dāng)您在那里時(shí),請(qǐng)確保下載 SPL 用戶手冊(cè),這在對(duì)控制器進(jìn)行編程時(shí)將非常方便。
編譯第一個(gè)程序
現(xiàn)在一切準(zhǔn)備就緒,讓我們嘗試編譯我們的第一個(gè)程序,以檢查 IDE、編譯器和庫(kù)是否都按應(yīng)有的方式工作。您還可以查看頁(yè)面底部的視頻以獲取詳細(xì)說(shuō)明。
首先打開(kāi) STVD 并選擇 File -》 WorkSpace,在彈出窗口中選擇“New Workspace”并輸入項(xiàng)目名稱和程序應(yīng)保存的路徑。我將我的程序命名為 BareMinimum 并將其保存在桌面上的文件夾中。單擊確定,您將獲得如下所示的新建項(xiàng)目對(duì)話框。
我再次將項(xiàng)目命名為bareminimum,在工具鏈下,我們必須將工具鏈根指定到安裝STM8 Cosmic編譯器的路徑。默認(rèn)路徑地址為 “C:\Program Files (x86)\COSMIC\FSE_Compilers\CXSTM8”。之后只需單擊“確定”即可獲得“MCU 選擇”窗口。
搜索 STM8S103F3P 并選擇它并單擊確定。這將在 STVD 上為 STM8S103F3P 打開(kāi)一個(gè)新項(xiàng)目,完成后窗口應(yīng)如下所示。
右鍵單擊“源文件”并選擇“將文件添加到文件夾”以包含我們 SPL 庫(kù)中的所有 c 文件,同樣右鍵單擊包含文件以包含所有頭文件。如果您有任何疑問(wèn),可以參考下面的視頻。添加完所有文件后,單擊 Build -》 rebuil d all 然后 Compile 檢查編譯器和 SPL 是否按預(yù)期工作。如果一切順利,您應(yīng)該會(huì)看到以下屏幕,其中包含構(gòu)建結(jié)果 0 錯(cuò)誤和 0 警告。
完成后,現(xiàn)在我們可以確定我們所有的 SPL 庫(kù)都在使用 Cosmic 編譯器和 STVD。這是我們將為每個(gè)新項(xiàng)目遵循的標(biāo)準(zhǔn)程序。如果需要,您還可以僅包含項(xiàng)目所需的必要頭文件和源文件,以減少構(gòu)建時(shí)間。
使用 ST-Link V2 將代碼從 STVD 上傳到 STM8S 開(kāi)發(fā)板
將 ST-Link V2 與開(kāi)發(fā)板連接,如下圖所示。
連接非常簡(jiǎn)單,最好的部分是您不需要外部組件。我的編程硬件設(shè)置如下所示,我剛剛使用母頭線進(jìn)行連接。但是,請(qǐng)注意您的 ST-Link 的引腳排列可能與我的不同,請(qǐng)確保在進(jìn)行連接之前遵循設(shè)備上的引腳排列。
建立連接并將設(shè)備連接到您的計(jì)算機(jī),驅(qū)動(dòng)程序安裝應(yīng)自動(dòng)開(kāi)始。您可以使用設(shè)備管理器來(lái)確保您的計(jì)算機(jī)是否正確發(fā)現(xiàn)了 ST-LINK V2。如果這是第一次為電路板供電,您還會(huì)注意到電路板上的測(cè)試 LED 閃爍。一旦我們?cè)?STVD 上成功編譯了代碼,我們就會(huì)在項(xiàng)目文件夾的 debug 目錄下得到一個(gè)“S19”擴(kuò)展文件。我的 S19 文件如下所示。
這個(gè) S19 就像應(yīng)該上傳到控制器的 Hex 文件。要上傳程序,請(qǐng)打開(kāi)應(yīng)該與 STVD 一起安裝的 ST Visual Programmer (STVP)。然后在配置窗口中,如下圖所示選擇,然后單擊確定。
然后單擊 文件-》打開(kāi) 并導(dǎo)航到我們之前顯示的 S19 文件。然后要刷新設(shè)備,請(qǐng)按照 程序 -》 當(dāng)前 選項(xiàng)卡。如果刷寫(xiě)成功,您應(yīng)該會(huì)看到以下輸出。
默認(rèn)情況下,當(dāng)您購(gòu)買 STM8S 時(shí),它將有一個(gè)閃爍測(cè)試 LED 的 blin 程序。現(xiàn)在上傳此空白代碼后,LED 將不再閃爍。
/* MAIN.C 文件
*
* 版權(quán)所有 (c) 2002-2005 STMicroelectronics
*/
#包括“STM8s.h”
主要的()
{
GPIO_Init(GPIOB, GPIO_PIN_5, GPIO_MODE_OUT_PP_HIGH_SLOW);
而(1);
}
評(píng)論
查看更多