(2014.11.30 追記)
(2014.12.6 修正)
注意)
このページで紹介しているCoIDEの使用法はSTマイクロさんの旧ライブラリ(Standard peripheral library)を使用したものです、一方このサイトでダウンロードできるソースコードは新ライブラリ(Cube HAL Driver)を使用したものです。新ライブラリの使用法はこちらを参考にしてください。
これから実際にプログラムを作成していくのですが、まず最初に左下のProjectウィンドウ内にあるmain.cファイルを削除します。
このサイトにあるコードはC++で書かれているのですが、拡張子が.cだとC言語として認識されるため.cppに変更する必要があります。
ウインドウ内で名前の変更も可能ではあるのですが、その場合HDD上のファイルと名称が一致しないのでこのような方法をとります。
他によいやり方があるかもしれませんし、今後のバージョンアップで改良されると期待しています。
エクスプローラーなどでプロジェクトフォルダ(今回の場合はC:\Temp\L_Chika)を開いてmain.cをmain.cppへリネームします。
その後main.cppを再度CoIDEのプロジェクタフォルダへドラッグアンドドロップして追加します。
ここまで来てようやくプログラムを書き始めることができます。
次にライブラリダウンロードより共通ライブラリ(DKSlib_Common.zip)とSTM32F3Discovery用のライブラリ(DKSlib_DiscoveryF3.zip)をダウンロードし、好きなフォルダに解凍してください。
今回はあくまでCoIDEの使い方紹介なので、ライブラリの詳細な説明は各コードの紹介ページをご覧ください。
ファイルが準備できたらフォルダごとドラッグアンドドロップしてプロジェクトに追加してください。フォルダ内のファイルがプロジェクトにリンクします。
そして次に以下のコードをmain.cpp内に打ち込んでください。
#include "DKS_Wait_Discovery_F3.h" #include "DKS_GPIO_Discovery_F3.h" #ifdef __cplusplus extern "C" { #endif int main(void) { DKS::DigitalOut LED3(GPIOE, GPIO_Pin_9);//LED3 DKS::Wait wait(TIM6); while(1) { wait.wait_ms(500); LED3 = !LED3; } } #ifdef __cplusplus } #endif
プログラムの内容は簡単そのものです。
タイマー(TIM6)を使用して500ms毎にPE9ピンをHigh / Lowさせているだけです。
今回の例では特に必要はなかったのですが、
extern "C"
を毎回入れておいたほうがよいと思います。
たとえば割り込みなどを行う際には
void EXTI0_IRQHandler(void)
{...}
などという関数を作成しますが、extern "C"の宣言がないとC++の関数と認識され、割り込みが発生しなくなります。
コードを打ち込み終わったらBuildボタンをクリックしてビルドします。本来ならここで完成としたいのですが、残念ながら一番下のConsole windowに赤字で
"stm32f30x_spi.h: No such file or directory"等のエラーが発生します。
これは今回のLチカでは使用しないSPI等のライブラリがDKSlib_DiscoveryF3.zipの中に含まれているため発生しています。この対策としては以下の2通りがあります。
です。ペリフェラルを追加する方法は前ページ中断にあるRepositoryでSPIなどエラーを出しているペリフェラルにチェックを入れることでできます。よくわからない場合はこちらの方が楽かもしれません。
このように不要ライブラリの対処を行った後BuildボタンをクリックするとConsole Windowに"BUILD SUCCESSFUL"となって完成すると思います。
ここまでくると後は書き込むだけです。
F3Discovery基板のUSB ST-LINKと記載されたUSBコネクタにケーブルをさし、ウインドウ上部のDownloadボタンをクリックしてください。
数秒コネクタ横のCOM LEDが赤/緑に点滅して書き込まれ、その直後からプログラムの実行が始まります。
うまくいくとLED3が1秒周期で点滅します。
うまく動いたでしょうか?
今回紹介したのはあくまで取っ掛かりですが、F3Discovery基板+CoIDEではもっと色々なことができます。
ぜひ皆さんもトライしてみてください。