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

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をインストールして手動で構成する必要があります。 いつものように。 まあ、何も、私たちはそれに慣れていない。
実際に、始めましょう!
そのため、次のものが必要です。
- STM32VL-ディスカバリーボード
- STM32 ST-Linkユーティリティ
- CoIDE開発環境は最新バージョン(現在は1.3.0)です。

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マイクロコントローラーの開発にご成功をお祈りします。
関連リソース
- 私の記事はSTM32周辺機器についてです。 周辺を研究するテクニックを教えます。 読むことをお勧めします。
- Eclipse + ARM-GCCバンドルの構成 。 CoIDEがあなたのために何をするかを知るために、読むことをお勧めします 。
- STM32コントローラドキュメントのビデオレビュー 。 コントローラに関するドキュメントを探す方法と場所を見つけるのに役立ちます。
- ST Microelectronics WebサイトのSTM32VL-Discovery 。 マニュアル、回路、ドライバー、ST-Link Utility、およびボードに関連するその他すべて。