stm32-arduino-f103

3930 ワード

仕事の中でたまに使ういくつかの補助板カード(例えば、情報の現場記録を実行する)に迅速な開発の手段を探して、Arduinoは流行のオープンソースとしてハードウェアのフレームワークを埋め込んで、コンポーネントが豊富で、資料が多いので、Arduinoをプラットフォームにしたいと思っています.しかし、Arduinoボードは基本的にAVRに基づいているが、現在の日常業務はARMを主としており、手元にもSTM 32 F 103の開発ボードが少なくないため、一部の開発ボードでArduinoを走る可能性を見てみたいと考えているが、検索を経て、以下の2つの案を見つけた(これは構築過程記録であり、比較的筋道がない):
Arduino_STM32
Arduino_STM 32をダウンロードしたら、そのままディレクトリhardwareの下に置きます(例えば「C:arduinohardwareArduino_STM 32」).再起動すると、ボードリストに新しく追加されたボードタイプが表示されます.
BootLoader、JLinkで焼き書き、STM 32 duino-bootloaderbinariesgeneric_boot20_pc13.binは直接焼き写すことができて、手元のSTM 32 F 103板の上で、PC 13の上で1つのLEDをプラスして、ジャンプラインJ 5は2-3の上に跳びます(つまりUSB口をgeneric_f 103板に配合します)、駆動はArduino_を運行する必要がありますSTM 32driverswin下のinstall_drivers.batをインストールします.具体的な理由は、Maple driversを参照してください.簡単に言えば、Windowsに必要な署名ドライバを「wdi-simple」で生成します.
更新プログラムはシリアルポートに接続し、手動でボードカードをBootloaderにリセットしてダウンロードする必要があります.
ボードカードのダウンロード方法については、Uploading_を参照してください.a_sketch、現在の結果Bootの下のUSBダウンロードは仕事ができますが、シリアルポートはできません.解決策は「STM 32 duino bootloader」を選択してダウンロードし、ダウンロード時にメッセージを見てリセットし、Bootloaderに入り、USBでダウンロードする.
ダウンロード時にエラーメッセージが表示されます.「error resetting after download:usb_reset:could not reset device,win error:The system cannot find the file specified.」直接無視できます.STM 32 Bootloader on Win 7 64 bitを参照してください.
stm32duino
主にGetting Startedを参考にしますが、これは公式の支持に偏っているはずで、比較的正規で筋道が通っています.
IDEのメニュー「File->Perference」は、ダイアログボックスの「Additional Boards Management URLs」に、「https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json」を選択し、メニュー「Tools->Board:xxxxx->Board Manager...」で、ダイアログボックスで「STM 32 Coress」インストールを選択します.
同様のボードカード変種を追加:Add a new variant(board)
手元で最も似たようなボードはNucleo F 072 RBなので、「Nucleo F 091 RC」に基づいていくつかの修正を行い、「Nucleo F 072 RB」ボード:「%LOCALAPPDATA%Arduino 15packagesSTM 32hardwarestm 321.5.0variants」の下で、「NUCLEO_F 091 RC」を「NUCLEO_F 072 RB」にコピーし、「ldscript.ld」のチップメモリ定義を変更する必要があります.「PeripheralPins.c」の「I 2 C 1」と「USART 5~USART 8」に関する定義を外し、LEDとシリアルポートテストプログラムを実行します.
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++); } 

正常に動作し、LD 2が点滅し、仮想シリアルポートは印刷された情報を受け取ることができ、OK.