stm32-arduino-f103

但願給工做中偶爾要用的一些輔助板卡(例如運行信息現場記錄)找一個快速開發的手段,Arduino做爲流行的開源嵌入硬件框架,組件豐富,資料衆多,因此想以Arduino做爲平臺。可是Arduino板子基本上基於AVR,可是目前平常工做以ARM爲主,並且手頭也有很多STM32F103的開發板,因此想看一下在一些開發板上跑Arduino的可能性,通過搜索,找到如下兩個方案(這是搭建過程記錄,比較沒有條理):php

Arduino_STM32

Arduino_STM32下載之後,直接放到目錄<arduino_dir>\hardware下(例如「C:\arduino\hardware\Arduino_STM32」)。重啓之後,在板卡列表裏面,就能夠看到新增長的板卡類型了。git

BootLoader,用JLink燒寫,STM32duino-bootloader\binaries\generic_boot20_pc13.bin直接燒寫就能夠,在手頭的STM32F103板子上,PC13上加一個LED,跳線J5跳到2-3上(即把USB口配成generic_f103板),驅動須要運行 Arduino_STM32\drivers\win下的install_drivers.bat來安裝,具體緣由見:Maple drivers。簡單地說,就是用「wdi-simple」來生成Windows須要的簽名驅動程序。github

更新程序須要鏈接串口,而後手動復位板卡到Bootloader,而後下載。json

板卡如何下載程序能夠參考Uploading_a_sketch,目前的結果Boot下的USB下載能夠工做,可是串口不行。解決方法是選「STM32duino bootloader」下載,而後在下載的時候,看到信息提示按復位,進入Bootloader,用USB下載。框架

下載時候出現錯誤提示:「error resetting after download: usb_reset: could not reset device, win error: The system cannot find the file specified.」,能夠直接忽略,見STM32 Bootloader on Win7 64bitoop

stm32duino

主要參考Getting Started,這應該是偏向於官方的支持,比較正規有條理。測試

IDE的菜單「File->Perference」,在對話框的「Additional Boards Managers URLs」裏,填寫「https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json」,而後在菜單「Tools->Board: xxxxxx->Board Manager …」,在對話框中,選擇「STM32 Cores」安裝。ui

增長相似的板卡變種:Add a new variant (board)spa

因爲手頭最相似的板子是Nucleo F072RB,故須要在「Nucleo F091RC」基礎上作一些修改,增長「Nucleo F072RB」板:「%LOCALAPPDATA%\Arduino15\packages\STM32\hardware\stm32\1.5.0\variants」下,複製「NUCLEO_F091RC」爲「NUCLEO_F072RB」,更改「ldscript.ld」裏面的芯片存儲器定義,去掉「PeripheralPins.c」裏面的「I2C1」和「USART5~USART8」相關的定義,運行LED和串口測試程序:code

const int pin = 13; void setup() { // put your setup code here, to run once: pinMode(pin, OUTPUT); Serial.begin(115200); } int n = 0; void loop() { // put your main code here, to run repeatedly: digitalWrite(pin, HIGH); delay(1000); digitalWrite(pin, LOW); delay(1000); Serial.print("n="); Serial.println(n++); } 

運行正常,LD2閃爍,虛擬串口能夠收到打印的信息,OK。

本站公眾號
   歡迎關注本站公眾號,獲取更多信息