Previous: 6.2.4.5. 書き込みの実行 |
Up: 6. ビルドと書き込み |
Next: 7. シリアルポートの利用 |
書き込みが完了した時点で、マイコンボード上のLEDが点滅します。マイコンボードに実装されているボタン(CQ-STARMBBの場合はSW1、STM3210E-EVALの場合はKey)を押すと点滅速度が変化します。CQ-STARMを使用している場合には、PE0(J1-8)にスイッチを接続すれば、速度の変化を確認することができます(接続方法は後述)。
main.c関数内の命令、関数の詳細は後述しますが、下記の通り、点滅を行っている部分(main()内のwhile文内)は非常に簡単なコードですので、ファームウェアの中身を知らなくても、ざっと見るだけで動作のロジックを想像できるのではないかと思います。
/* Toggle LED */ while (1) { ?? if (GPIO_ReadInputDataBit(BUT_GPIO, BUT_GPIO_Pin)) ?? Count = 0x1FFFFF; ?? else ?? Count = 0x1FFFF; ?? /* Turn on LED */ ?? GPIO_SetBits(LED_GPIO, LED_GPIO_Pin); ?? /* Insert delay */ ?? Delay(Count); ?? /* Turn off LED */ ?? GPIO_ResetBits(LED_GPIO, LED_GPIO_Pin); ?? /* Insert delay */ ?? Delay(Count); } |
たとえばここでLEDの点灯、消灯時間を変更したいとします。Count変数が待ちループのカウント数を設定する変数です。代入している数値(16進数)を増減させると、点灯・消灯時間が変わります。
ソースコードを変更した後は、忘れずに保存してください。画面上で変更されていても、保存していない場合には、コンパイラは変更前のコードをコンパイルしてしまいます。
保存後debugtターゲット・flashターゲットを順にダブルクリックして、マイコンのフラッシュに書き込みましょう。点灯・消灯時間が変更されているのが確認できるはずです。
サンプルでは点灯と消灯の時間が同じですが、点灯と消灯の時間を変えるにはどうしたらよいでしょうか。たとえば下記のようなコードが考えられますね。
/* Toggle LED */ while (1) { ? if (GPIO_ReadInputDataBit(BUT_GPIO, BUT_GPIO_Pin)) ?? { ????? OnCount = 0x1FFFFF; ????? OffCount = 0x4FFFF; ?? } ? else ?? { ????? OnCount = 0x4FFFF; ????? OffCount = 0x1FFFFF; ?? } ? /* Turn on LED */ ? GPIO_SetBits(LED_GPIO, LED_GPIO_Pin); ? /* Insert delay */ ? Delay(OnCount); ? /* Turn off LED */ ? GPIO_ResetBits(LED_GPIO, LED_GPIO_Pin); ? /* Insert delay */ ? Delay(OffCount); } |
ファームウェアの内容がわからなくても、サンプル中の関数だけでいろいろなパターンの動作を構成できると思います。プログラミング・書き込みの手順に慣れるためにも、いろいろと工夫してみてください。
Previous: 6.2.4.5. 書き込みの実行 |
Up: 6. ビルドと書き込み |
Next: 7. シリアルポートの利用 |