STM32ファストスタート。 パート1ソフトウェア、マテリアル、Cube MX

最近、STM32コントローラーに適用されるCube MXとHALのトピックに関するホリバーに出会うことが増えています。



一方で、構成の容易さとコードの読みやすさを好む支持者がいます。



一方、支持者はすべてを手で書きます。そのためには、作業の速度とリソースの慎重な使用が重要です。



すべてのiにドットを付けるには、最も一般的に使用される3つのパスCMSIS、LL、HALで「Hello world」を記述してください。 コスト(コントローラーリソース、実行可能ファイルのボリューム、そしてもちろん開発者の時間)を推定します。



この記事はいくつかのパートで構成されます。



STM32ファストスタート。 パート1ソフトウェア、マテリアル、Cube MX。

STM32ファストスタート。 パート2 HALのHello World、Atollic TrueSTUDIOでのセットアップのデバッグ

STM32ファストスタート。 パート3 LLのHello World

STM32ファストスタート。 パート4 CMSISのHello World

STM32ファストスタート。 パート5要約、HAL、LL、CMSISの比較。



最初に、実際にプログラムするもの、つまり適切なハードウェアを見つけるかを決めましょう。



理想的なオプションは、STM32F103C8T6マイクロコントローラーの予算ボードです。



画像



この料金は、有名なサイト全体で100ロシアルーブルの価格で見つけることができます。



キーワードで検索:STM32F103C8T6 ARM STM32 Minimum



https://en.aliexpress.com/af/STM32F103C8T6-ARM-STM32-Minimum.html?SearchText=STM32F103C8T6+ARM+STM32+Minimum



ファームウェアを埋めてデバッグを行うには、プログラマーも必要です

手始めに、そして将来の使用のために、ST-LINK V2プログラマーの中国語クローンが理想的です。



同じサイトで120ロシアルーブルの価格で購入できます。



画像



キーワードで検索ST LINK Stlink ST 252dLink V2 Mini STM8 STM32:



https://en.aliexpress.com/af/ST-LINK-Stlink-ST%25252dLink-V2-Mini-STM8-STM32.html?SearchText=ST+LINK+Stlink+ST%252dLink+V2+Mini+STM8+ STM32



STM32用のソフトウェアを開発するには、さまざまなIDEを使用できます。



最も人気のあるのは、IAR、Keil、Coocox(Eclipse)です。



私たちは最近、完全に無料で完全にSTによって完全に提供されたパスに従います。



Atollic TrueSTUDIOをSTM32または一般の人々Tolikで使用します。



このソフトウェアの利点は何ですか:完全に無料、コードのサイズに制限はありません、優れたデバッガー、簡単なインストールと構成があります。



短所:自動コード補完なし。



WindowsおよびLinuxのバージョンが利用可能です。



ここからダウンロードhttps://atollic.com/resources/download/

このソフトウェアのインストールに問題はないはずです。すべてが直感的にわかりやすいので、どこに置くかを選択し、常に「次へ」をクリックします。



IDEに加えて何か他のものが必要なため、インストール後は実行できません。



まだ実行している場合は、閉じてください。



TrueSTUDIOは開発およびデバッグツールであるため、プロジェクトを手作業でアセンブル(必要なライブラリを接続してパスを指定)するのではなく、事前に構成されたファイルを取得して、不要なトラブルなしにすぐにコードを記述できるようにします。



これを行うには、Cube MXコードジェネレータプログラムを使用するか、一般の人々「Kalokub」で使用します。

このソフトウェアは、STMの下で何を書くべきかについての最初のつまずきブロックです:レジスターとCMSISまたはHAL。



最初のイデオロギーの支持者は次の議論をします。CubeMXは巨大で不必要な量のコードを生成し、これもMKの作業を遅くします。



2番目のディフェンダー-自動生成されたコードは開発時間を短縮し、開発者はデバイスのガター部分(メインロジック)にすばやく切り替えて、専用ソフトウェア(Cube MX)に周辺ルーチンを提供できると言います。



奇妙なことに、これらのイデオロギーは両方とも実際に当てはまりますが、それぞれ独自の条件にのみ当てはまります。



いくつかの例を見てみましょう。



例1:年間100500個のバッチで生産する予定であるため、可能な限り安価なデバイスを開発する必要があります。 当然、デバイスの価格が1ルーブル増えるごとに、最終的なデバイスに数十万ルーブルの費用が発生します。 さらに、計画された開発では、いくつかの重い計算があり、周辺機器(ADC、SPI、UART)を最大速度で使用します。



このデバイスは完全に自律的な製品であり、将来的には、この機器の生産期間全体にわたって最小限の変更を加える予定です。 完成したサンプルまでの開発期間は1〜2年です。



例2:デバイスのプロトタイプが必要です。これは顧客にとって興味深いものである可能性があり、施設の変換のために同様のデバイスを100個注文します。 最初の計画バッチは、2か月以内に顧客に出荷する必要があります。 10個の最初のテストバッチのサイズ。



正確な仕様はプロジェクトでの作業の過程で調整されますが、将来、ハードウェアのいくつかの改訂が計画されており、適用されるすべてのロジックを迅速に調整する必要があることが知られています。



最初の例では、最も安価なコントローラーを選択し、適切なレジスター(CMSIS)へのアクセスを通じて周辺機器の作業を整理する、ハードウェアに依存するが最適なコードを作成するのが理想的なオプションです。 このプロジェクトに関与する開発者は、特定のMKファミリの周辺について十分な知識を持っている必要があります。 理想的には、彼を夜に目覚めさせようとするとき、彼はすぐに割り込みベクターのテーブルから必要なベクターのアドレスに名前を付けるべきです。



2番目の例では、コントローラーの選択は、使用可能なハードウェアと、顧客が必要とする機能を記述するのに必要な時間によって決まります。 そのため、ソフトウェア自体の速度と最適性がバックグラウンドにフェードインしています。 ハードウェアの依存関係を解決する時間がないように、手動で初期化する時間がありません。



この場合、現在の地域ですぐに実稼働できるコントローラが選択され、Cube MXを使用して初期化され、アプリケーションロジックがHALで記述され、テスト用にプロトタイプが顧客に転送されます。 このようなプロジェクトは、ターゲットプログラミング言語で作業するスキルを習得した平均的な開発者が実施できます。 周辺の作業の複雑さを理解することは、実際には必要ありません。



ロシアの現代のデバイス開発の現実では、これがどれほど悲しくても、例1は少なくなり、例2にバトンが渡されます。



一連の記事の最後にある例1と例2の説明に戻り、ワークスペースの準備を続けます。



この段階では、STの会社のポリシーでは登録せずに必要な資料をダウンロードすることは許可されていないため、短い休憩を取り、 my.st.comにアクセスしてアカウントを登録します。



サイトにアクセスした後、 STM32 Cube MXをダウンロードします。



ページの一番下にバージョン選択ボタンがあり、バージョン5.0.0が必要です。



画像



途中で、ここを離れるまで、今後便利になるものをさらに2つダウンロードします。

https://www.st.com/en/development-tools/stsw-link008.html



ST-LINK V2ドライバー



画像



およびhttps://www.st.com/en/development-tools/stm32cubeprog.html

プログラムフラッシャー。



画像



ドライバー、フラッシャー、カブ自体をインストールしても問題は発生せず、すべてに同意してクリックするだけです。



必要なソフトウェアを完全にインストールしたら、プロジェクトの作成を開始できます。

これを行うには、Cube MXを実行します。



表示されるウィンドウで、「MCUセレクターへのアクセス」ボタンをクリックします。



画像



STM32F103C8T6マイクロコントローラーは、ターゲットボードにインストールされています。



検索バーに名前を入力し、ダブルクリックして、見つかった唯一のオプションを選択します。



同じ表で、MKの主な内容(64キロバイトのフラッシュ、20キロバイトのRAMなど)を確認できます。



画像



私たちが登場する前は、模式的に描かれたコントローラーケースが、脚がさまざまな方向に広がっています。



この段階では、デバッガーの接続方法を必ず選択する必要があります。



これを行うには、左側のメニューの[ピン配置と構成]タブで[SYS]項目を選択し、[デバッグ]というドロップダウンリストでシリアルワイヤの値を設定します。



同時に、デバッグの目的で、プログラムがコントローラーのニーモニックに2つのピンを予約していることに気づきます。



画像



もう一度、ボード上のLEDを点滅させたいことを思い出します。



これを行うには、最初に接続されている特定のレッグを見つける必要があります。



これで、電気回路図を助けます:



画像



またはよりカラフルでわかりやすいボードのピン配列



画像



目的のLEDはPC13脚にあります。



したがって、この出力を出力モードで動作するように構成する必要があります。



これを行うには:



  1. ニーモニック図で結論を見つけます
  2. それを右クリックし、ドロップダウンメニューから項目「GPIO_Output」を選択します
  3. GPIOメニューに移動し、
  4. リストで、PC13を選択します
  5. スクリーンショットに従ってPC13-TAMPER-RTC構成テーブルに入力します。特に、GPIOモードとユーザーラベルパラメーターに関心があります。


画像



プロジェクトの構成を続行し、[クロック構成]タブに移動します。



実際、これは周辺機器のクロック設定を構成できる最も重要なタブの1つですが、現時点では主な目標はこれではないため、ここでは何も触れません。



画像



[プロジェクト]タブの下の[プロジェクトマネージャー]タブに移動します。



次のパラメータを必ず入力してください。



  1. プロジェクト名(ラテン文字のみを使用することをお勧めします)
  2. プロジェクトが作成されるディレクトリ(ラテン文字のみを使用することをお勧めします)
  3. プロジェクトで作業する予定のIDE(TrueSTUDIOを使用する予定です)


画像



以下に、コードジェネレータータブの下に行きます。



ここでは、オプションとして周辺機器の初期化をペアとして生成するオプションに注意してください...



したがって、より構造化されたプロジェクトを取得します。このプロジェクトでは、周辺タイプごとにCとHのファイルのペアがあります。



画像



最後のステップが残った。 サブタブの詳細設定。



  1. すべての周辺モジュールのHALライブラリのタイプを選択します
  2. 現在の設定でプロジェクトを収集します


画像



最初の起動時に、選択したMKファミリのライブラリの現在のバージョンをダウンロードする必要がある場合があります。



ファイルのダウンロードに同意します:



画像



やかんを温めるか、コーヒーを作ります:



画像



コードジェネレーターの作業が完了したら、すぐに開きます。



画像



Atollicがワークスペースを保存するフォルダーを選択します。



画像



正常に開くと、STM用Atollic TrueSTUDIOのメインウィンドウが表示されます。



一般的な情報はあまり興味がないので、ファイルツリーに移りましょう。



画像



main.cファイルとint main(void)関数を見つけます:



画像



セルフテストの場合-空のプロジェクトを収集してください



  1. メニューのプロジェクト->プロジェクトの再構築
  2. 以下で[コンソール]タブを選択します
  3. 正常に組み立てられたら-碑文のビルドが完了しました


画像



次の部分に続きます。



PS:以前に個人的なブログで記事を公開しました。



All Articles