030 KEIL開発ツールをまずは起動してSTM32-DISCOVERYをつないでみる

●スタート → Keil uVision4 を起動します.

●こんなメッセージが出まして.

●uVision4の開発画面が現れますが、最初にいじるネタを別の場所からとってきます.

ここを開きます.

http://www.stm32challenge.com/resources

●Keil MDK-ARM のリンクは解説pdfです.

STM32DesignChallengepackageが.zipのサンプルプログラムです.

ダウンロードして適当なフォルダに起きます.

●.zipを解凍するとこのようなフォルダができます.

Demo\MDK-ARMをここでは使います.

●サンプルプロジェクトを開きます.

uVision4のメニューからProject→Open Project....をクリックします.

●projectファイルをどれにするか聞いてきますので、

Project\Demo\MDK-ARM\DiscoveryDesignChallenge.uvproj

を開きます.

●サンプルプロジェクトが正しく読み込まれました.

●いきなりビルドしてみます.

●ビルドは正常に終了します.

Build target 'DiscoveryDesignChallenge'

linking...

Program Size: Code=1652 RO-data=364 RW-data=52 ZI-data=1028

".\Debug\DiscoveryDesignChallenge.axf" - 0 Error(s), 0 Warning(s).

●デバッグしてみましょう.

STM32-DISCOVERYをPCにUSBでつなぎます.

デバッグボタンを押します.

32k制限のダイアログが出ますが、気にせずOKをクリック.

●デバッグ画面が現れますが、STM32-DISCOVERYが動いている気配はありません.

なにか設定してないところがあるんでしょう.

Project設定を確かめるためにメニューからProject→Select Device for Target DisoveryDesignChallenge をクリックします.

●すると次の画面が現れますが、STM32F103RGが設定されています.

こりゃ動くわけがないわ.

というわけで、STM32F100RBに治します.

●C/C++のタブを開きますと、STM32F10X_XL という文字がみえます.

これをSTM32F10X_MD_VLに変えます.

OKをクリックします.

●再度ビルドします.

●再度デバッグします.

OKします.

●デバッガ画面のRunボタンをクリックしてSTM32-DISCOVERYを動かします.

●デバッガを止めるときはこのボタンをクリックします.

●STM32-DISCOVERYをRunさせた状態では、

グリーンLEDが点滅します.

青いボタンを押すとブルーLEDが光ります.

そのあとでグリーンLEDの点滅速度が変わります.

この動作は、main.cの次のコードによるものです.

ちゃんと動かせました.

/* main while */

while(1)

{

if(0 == STM32designchallenge_PBGetState(BUTTON_USER))

{

if(KeyState == 1)

{

if(0 == STM32designchallenge_PBGetState(BUTTON_USER))

{

/* USER Button released */

KeyState = 0;

/* Turn Off LED4 */

STM32designchallenge_LEDOff(LED4);

}

}

}

else if(STM32designchallenge_PBGetState(BUTTON_USER))

{

if(KeyState == 0)

{

if(STM32designchallenge_PBGetState(BUTTON_USER))

{

/* USER Button released */

KeyState = 1;

/* Turn ON LED4 */

STM32designchallenge_LEDOn(LED4);

Delay(1000);

/* Turn OFF LED4 */

STM32designchallenge_LEDOff(LED4);

/* BlinkSpeed: 0 -> 1 -> 2, then re-cycle */

BlinkSpeed ++ ;

}

}

}

count++;

Delay(100);

/* BlinkSpeed: 0 */

if(BlinkSpeed == 0)

{

if(4 == (count % 8))

STM32designchallenge_LEDOn(LED3);

if(0 == (count % 8))

STM32designchallenge_LEDOff(LED3);

}

/* BlinkSpeed: 1 */

if(BlinkSpeed == 1)

{

if(2 == (count % 4))

STM32designchallenge_LEDOn(LED3);

if(0 == (count % 4))

STM32designchallenge_LEDOff(LED3);

}

/* BlinkSpeed: 2 */

if(BlinkSpeed == 2)

{

if(0 == (count % 2))

STM32designchallenge_LEDOn(LED3);

else

STM32designchallenge_LEDOff(LED3);

}

/* BlinkSpeed: 3 */

else if(BlinkSpeed == 3)

BlinkSpeed = 0;

}