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;
}