Arduino廣為電子愛好者和工程師熟悉,但8位CPU和慢幾拍的時鐘并不適合深度開發。如果與STM32F103C8T6結合,一個全新的應用就會出現,我們可在Arduino IDE上對STM32板子進行編程。
本項目所需材料有:STM32小藍板 (STM32F103C8T6)、FTDI編程器、面包板及導線、可聯網筆記本電腦。
了解STM32小藍板
STM32開發板由于PCB藍色而稱為小藍板(Blue Pill),采用的是STM32F103C8T6芯片,體積比Arduino Nano板略大。除了芯片本身,板上還有一個8Mhz晶體和一個32KHz晶體來驅動內部實時時鐘。該電路板使用3.3V邏輯電平,但其大部分引腳均為5V耐壓,可運行于深度睡眠模式。
STM32F103C8T6是一款32位ARM處理器,主頻72MHz,提供20KB的RAM和64KB閃存,足以構建大型項目。芯片具有37個GPIO引腳,10個ADC引腳、SPI、I2C、CAN、UART總線和DMA控制器。這些令人印象深刻的芯片價格為3美元。如果我們將STM32的規格與Arduino Uno的規格進行比較,我們可以看到這個小板在每個領域都優于Arduino Uno。STM32芯片的工作頻率是Arduino Uno工作頻率的4.5倍。因此,預計STM32至少比Arduino Uno快4.5倍。
與Arduino板不同,小藍板必須使用boot 1 and boot 0跳線手動改設置編程模式,編程時將boot 0設置為3.3V,工作時設置為接地。
編程準備
STM32小藍板可使用所有的ARM芯片編程方式進行編程一些常見的IDE有:Keil ARM MDK、IAR workbench、Atollic TrueStudio、MicroC Pro ARM、Crossworks ARM、Ride 7、PlatformIO+STM32。本項目使用Arduino IDE是為了方便,因為大家普遍對Arduino IDE環境比較熟悉。
使用Arduino IDE直接編程STM32 Blue Pill 板子時,我們需要一塊串口FTDI 板,這塊板子連接于小籃板的Rx、Tx引腳。
這里,FTDI板的Vcc引腳連接與STM32 5V供電引腳,兩塊板的地-地連接,Rx、Tx引腳分別連接STM32小籃板的A9、A10引腳。
當然,如果方便的話,你也可以直接使用micro-USB端口對STM32小籃板進行編程,這樣做是為了讓大家多了解一種方法。步驟如下:
Step 1:- 選擇正確的Arduino IDE并安裝。
Step 2:- 打開Arduino IDE,下載STM32小籃板所需的封裝。
Step 3:- 點擊references,打開如下對話框,在Boards Manager URL文本框中黏貼鏈接http://dan.drown.org/stm32duino/package_STM32duino_index.json,
然后按 OK。

?
Step 4:- 進入Tool -> Boards -> Board Manager打開板自管理器并選擇“STM32F1” ,再安裝出現的封裝。
Step 5:- 安裝完成。在 Tools 下拉中尋找如下 Generic STM32F103C 系列,確定參數為:64kFlah type, CPU speed is 72MHz,并將上傳模式更改為串口。
?

Step 6:- 將FTDI板于電腦鏈接,檢查FTDI板子所連接的哪個COM 端口是用作設備管理的。然后,在 Tools->Port 中選擇同一端口編號。
Step 7:- 完成上述變更后,檢查Arduino IDE右下角顯示正在設置。這樣,Arduino IDE 就已經準備就緒,可以對STM 32小籃板進行編程了。
上傳stm32f103c8t6示范代碼
從Arduino IDE中將Sample Blink Program 上傳到STM32小籃板,確保運行正常。


示范程序打開后,需要進行小小改動。默認形況是寫入PB1,本項目的LED連接于PC13,需要用PC13來取代PB1。
由于我們已經很好處理了,記下來出現以下程序,這樣LED將以1000毫秒間隔閃爍。
?digitalWrite(PC13, HIGH); ? // turn the LED on (HIGH is the voltage level)
?delay(1000); ? ? ? ? ? ? ?// wait for a second
?digitalWrite(PC13, LOW); ? ?// turn the LED off by making the voltage LOW
?delay(1000); ? ? ? ? ? ? ?// wait for a second
?
由于早期的STM32板必須在上傳程序之前設置為編程模式,這需要將boot 0 跳線置于低位。
現在,按下復位按鈕,進入編程模式,綠色LED等熄滅,表示板子準備就緒。
按Arduino IDE的上傳健,開始編程和上傳。如果一切正常,將會出現Arduino IDE 界面:

運行STM32閃爍程序
程序正常上傳后,綠色LED將以1妙間隔閃爍,當然,你也可以變更程序以增加或縮短時間間隔,實現不同效果的閃爍體驗。
程序上傳完成后,boot 0 跳線應該歸位到運行模式,這樣下次板子上電后就會自動開始上傳程序。
附:STM32閃爍代碼
/*
?circuitdigest.com
?Sample STM32 Blink Program for Blue Pill board?
?*/
// the setup function runs once when you press reset or power the board
void setup() {
?// initialize digital pin PC13 as an output.
?pinMode(PC13, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
?digitalWrite(PC13, HIGH); ??// turn the LED on (HIGH is the voltage level)
?delay(1000); ? ? ? ? ? ? ?// wait for a second
?digitalWrite(PC13, LOW); ? ?// turn the LED off by making the voltage LOW
?delay(1000); ? ? ? ? ? ? ?// wait for a second?
? }
評論