勉強するとき

なじみのないビジネス、特にマイクロコントローラに関しては、「どこから始めればよいか」という疑問が生じます。 キーワード「Getting Started」に関する記事の検索が進行中です。開発環境とデバッガーの選択にはジレンマが避けられません。 質問への回答を決定するのに役立つように、ST Microelectronicsの32ビットSTM32Fコントローラーをマスターした経験を共有します。
コントローラーの選択
STM32FまたはNXP(LPC1xxx)の2つのオプションが本質的にありました。 STM32Fマイクロコントローラの場合、いくつかの理由で私の選択は落ちました。
まず、安価なSTM32VL-Discoveryデバッグボード。 エレクトロニクスに携わっている人の中には、おそらく無料の
Discoveryを
手に入れた人もいるかもしれません
。Discoveryは 、EBV-Electronikのコンテストに参加すると無料で配布されます。 申請書を提出することができなかった、またはそのような機会についてさえ知らなかった人々は動揺すべきではありません-料金は約500ルーブルかかります。 価格は手頃な価格以上です。
第二に、コントローラー自体はかなり安価です。 ボード上の16キロバイトの最も単純な石STM32F100C4T6のコスト
は40ルーブル (!)
未満ですが、その特性と周辺機器によると、「メガ」が作成されます。 ハードウェアUSB(STM32F103)を備えた古いラインの石の価格も非常に人道的で、約120ルーブルです。
第三に、コントローラーは電子技術者から積極的に関心を集め始めており、STM32の開発に関する記事が次々とインターネットに掲載されています。 それが続けば、人気はAtmelコントローラーのレベルに達するかもしれません。

Atmelと比較したアマチュア無線の唯一の不便は、その小さなボディです。 DIPについて忘れることができます。 利用可能な唯一のハウジングは、
0.5 mmピッチのLQFPです。 それでも、あるコツでLUTを使用してボードを作成するのは難しくありません(これについては既に
読んでい
ます )。そのため、小さなケースをマイナスとは考えません。 左の写真は、LQFP48シャーシ用のマザーボードです。
STM32VL-Discoveryデバッグボードに関するいくつかの言葉:ボード上には、ST-Linkデバッガーとデバッガー(ターゲット)コントローラーSTM32F100RBT6(128 kbフラッシュ、8 kb RAM)が搭載されています。 すべてのピンはピンに配線され、2つのLEDとボタンがあります。 デバッガのSWDコネクタが引き出されているため、ボードは通常のST-Linkのように使用することもできます。 これは私たちの好意であり、プログラマを購入する必要はありません。
開発環境の選択
ここでは、すべてがAtmelovskaya AVR Studioのように単純ではありません。 いくつかのオプションがあります:
- IAR コマーシャル。 実行可能コードの量を制限します。 ハハ。
- Keil 。 同じこと。 ハハ。
- Atollic TrueStudio 。 Eclipseに基づいていますが、それでも商用です。 無料のLiteバージョンにはコードサイズの制限はありませんが、「Get PROバージョン」広告が定期的に表示されます。 ハハ。
- ARMプラグインとARM-GCCコンパイラを備えたPure Eclipse 。 それはクロスプラットフォームの幸福のようですが、どこよりもさらに適切な候補が現れます:
- CooCox IDE (CoIDE)。 Eclipseにも基づいていますが、無料です。 ARMを使用するためのすべてが含まれており、キャッシュデスクを離れることなく必要なライブラリをダウンロードできます。 さまざまなデバッガーで動作することができます(ただし、ST-Linkでは動作しませんが、GNUデバッガーをインストールすることでバイパスされます)。 唯一のマイナス-アセンブリはWindowsのみです。 Linuxユーザーは、Eclipseをインストールして手動で構成する必要があります。 いつものように。 まあ、何も、私たちはそれに慣れていない。
さて、私の選択が行われます。 それに挑戦したり、ノートブックに書いたり、メイクファイルでコンパイルしたり、神聖なGCCに反対することで商用ソリューションに立ち寄ることさえできます。 しかし、個人的には、CoIDEは、少なくともクイックスタートにとっては理想的な開発環境にすぎないと思います。 彼女から始めましょう。 そして、そこに表示されます。
実際に、始めましょう!
そのため、次のものが必要です。
- STM32VL-ディスカバリーボード
- STM32 ST-Linkユーティリティ
- CoIDE開発環境は最新バージョン(現在は1.3.0)です。
CoIDEを起動します。 コントローラーのメーカーを選択し、次にチップ自体を選択することをお勧めします。
STM32F100RBT6を選択します。ディスカバリーを実行するのは彼です。 次に、プラグインライブラリを選択するためのページが表示されます。これは、開発環境の選択において決定的な役割を果たしました。

ARM Cortex M3コア用のCMSISライブラリ、STM32ペリフェラルライブラリ(ST Microelectronicsのペリフェラルを操作するためのライブラリ)、および選択したマイクロコントローラ用のCooCox独自の開発もあります。 必要なライブラリと帽子にあるものにチェックを入れるだけです。 最も単純なLEDウインカー(これがまさにマイクロコントローラー上で「Hello World」に見えるもの)には、CMSISコア、CMSISブート、RCC(周辺クロック制御)、GPIO(汎用入出力ポート制御)が必要です。
さらに説明することなく、最も単純なプログラムのコードを記述します。
#include <stm32f10x.h> #include <stm32f10x_conf.h> #include <stm32f10x_rcc.h> #include <stm32f10x_gpio.h> void Delay(volatile uint32_t nCount) { for (; nCount != 0; nCount--); } int main(void) { /* SystemInit() startup_stm32f10x_md_vl.c */ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC , ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init( GPIOC , &GPIO_InitStructure); while (1) { GPIOC->ODR |= GPIO_ODR_ODR9; Delay(0x1FFFF); GPIOC->ODR &= ~GPIO_ODR_ODR9; Delay(0x7FFFF); } return 0; }
コンパイル(F7)し、デバッグディレクトリに表示される実行可能ファイル(bin、hex、elf)を確認します。
コントローラーファームウェア
プログラムを準備しました。今度はそれをチップにロードします。 ボードを接続し(ドライバーのインストールについては説明しません)、ST-Link Utilityを起動します。 DiscoveryのコントローラーはSWDを介して接続されているため、最初に行うことは、デバッガーの動作モードをJTAGからSWDに切り替えることです。

さらに、すべてが透過的です。[ターゲット]-> [プログラムと検証]メニューで、hexファイルを選択し、[プログラム]をクリックすると、ファームウェアが完成します。 ディスカバリーボードのリセットボタン(黒いキャップのボタン)を押して、点滅するLEDを楽しむだけです。

おめでとうございます 最初のプログラムが作成され、コンパイルされ、チップにフラッシュされ、正常に動作します。 始まりましたが、それはあなた次第です:通常どおりテンプレートコードに登り、何かを変更し、それを補い、新しい周辺機器を研究し、新しいライブラリを接続します。 リファレンスマニュアルを読むことを忘れないでください。多くの有用な情報があります。
更新:バージョン1.3.0以降、CooCox IDE開発環境はST-Linkをサポートするため、ST-Linkユーティリティを使用せずにCoIDEから直接プログラミングとデバッグを実行できます。 メニューデバッグ->デバッグ構成(ST-Link、SWDポート)からアダプターを選択します。 メニューの[フラッシュ]-> [プログラムのダウンロード]からコントローラーにプログラムをダウンロードします。それだけです ST Microelectronicsマイクロコントローラーの開発にご成功をお祈りします。
関連リソース