STM32と友達になろうとする





前回 、貧しいタコチップとArduino IDEを組み合わせて、ATtiny 85マイクロコントローラーをモックしました。 そして、それがどんな奇跡であるかを知りたかった-STM32は、そのファンがAVRプログラマー(もちろんarduinoは言うまでもない)を見て、不承認だ。 簡単なグーグルの過程で、STM32「ばか用」が存在することが判明しました-Leaf Mapleプロジェクトがあり、STM32F103に基づく2つのマザーボードとArduino IDEのクローンである開発環境があります。



決定的な要因はコストでした。 Leaf Maple Miniの中国語版は4ドルで販売されています-Arduino Nanoよりも少し高価です。 3個を注文して、私は待ち始めました。



おそらくMapleに賭けたことで私は少し急いでいました-プロジェクトは生きているよりも死んでいる可能性が高いです。 IDEは開発中ではなく、Windows 8にはタンバリンのないドライバーはありません。ライブラリはまだ初期段階にあり、完全に落胆し、荒廃しています。 興味を引くために、LEDを点滅させて、OS XでMaple IDEを実行し(箱から出してすぐに動作します)、その後の調査のためにボードにアプローチする方法を考え始めました。





手始めに、私はこれを見つけました。 Leaf Maple Miniボード上のSTM32F103CBT6マイクロコントローラー(STの名前は厳しい)では、Maple IDEでUSB経由で動作するブートローダーが縫製されています。 フラッシュメモリにあります。 そして、「裸の」STM32をプログラムする方法は? 良い方法では、ST-Linkを使用する必要があります。ST-Linkを使用すると、ファームウェアを「埋める」だけでなく、デバッグもできるからです。 そして、この鉄片なしで何をすべきか? UARTで動作する「システム」ブートローダーSTM32を使用します。 ビン内のCP2102チップにはミニボードがあります。おかしくなり始めます。



STM32ドライブのプログラミングに使用されるIDEは退屈です。 事実、私はプログラマーではなく、タブと恐ろしい文字の束を備えた複数のウィンドウが、隠された不本意をすべて掘り下げます。 しかし、それは必要なようです。 三位一体の最も混乱していないもの(キール、IAR、クーコックス)は私には後者のようでした。



だから、アクションのシーケンス。 Coocoxを追加しました-ARM用GCCコンパイラ。 私たちは傑作プロジェクト-Blinkを書いています。 次に、アセンブリ「ボード」で、Maple MiniおよびCP2102から構造を組み立てます。 ココナッツはST-Linkを必要としているため、ファームウェアを埋めるために何か他のものが必要であることがわかります。 直接コンパイルされたコードは、ST-Flash Loader Demonstratorのユーティリティを使用して、UART経由で簡単にフラッシュできます。 より詳細に。



熊手とココナッツ







熊手はありません。 最初の「待ち伏せ」-IDEの現在のバージョン(2.0)は奇妙なもので、突然STM32F1xxをサポートしていません。 バージョン1.7.7を削除してインストールすると、プロジェクトを作成できるようになります。 GPIOをプロジェクトに接続し、このモジュールの例で必要な点滅を使用して、Maple Mini LED(PORT B PIN 1)を使用するために少しやり直します。 ここでポートを初期化するのは曲全体です(理解できますが、AVRよりも複雑です)。 つまり、このポートは抜け道であると言う必要はありません。 このポート-電源を入れて時計を合わせる必要があり、波紋とクローブではなく、弓とパンのある出口になります...



鉄アセンブリ







ここではすべてが簡単です-CP2102でモジュールを取得し、STM32に接続します。



STM-2102



RX1-TX

TX1-RX

GND-GND

Vin-VCC



1つのトリックは、STM32F103をUARTブートローダーモードで起動する方法です。 このプロセスは、Leaf Labs Webサイトの「USBブートローダーを台無しにした場合の対処方法」セクションで詳しく説明されています。 BOOT1脚を地面に接続し、RESETと2番目のボタンを押して、RESETを放し、2番目のボタンを放します。 こんにちはブートローダー!



燃えている!



Flash Loader Demonstratorを実行し、それをbinファイルに「フィード」し、コンパイル後にプロジェクトのどこかでぶらぶらします。 このユーティリティでどの操作が呼び出されるのか興味があります。 ダウンロードはチップです。 そして、アップロードはチップからです。 私の認識は反抗的ですが、おそらくここで受け入れられています。



合計



STM32のLEDをそのまま点滅させることはできません。 これをArduinoのようにマウスを2回クリックするか、avr-gccコマンドとavrdudeコマンドのペアで実行するには、ここでは機能しません。 試み(Maple IDE)はありましたが、吹き飛ばされました。 したがって、実際に座って、それがどのように機能するかを理解する必要があります。



UPD。 アンケートを追加しました。



All Articles