パソコンからマイコンボード上の LED の点滅をコントロールする. このプログラムの説明は,CQ出版社「トランジスタ技術」の2021年10月号から開始された連載記事「STM32マイコンではじめるPC計測」の中にあります.このプログラムといっしょに使うPC側のプログラムについても同誌を参照してください.

Dependencies:   mbed SerialTxRxIntr

Committer:
MikamiUitOpen
Date:
Thu Sep 09 08:42:03 2021 +0000
Revision:
0:7ea2d228859d
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:7ea2d228859d 1 //------------------------------------------------------------------------------
MikamiUitOpen 0:7ea2d228859d 2 // Nucleo-F446 と PC 間の通信を利用するプログラムの例
MikamiUitOpen 0:7ea2d228859d 3 // マイコンボード上の LED の点滅のコントロール:起動時は点灯状態
MikamiUitOpen 0:7ea2d228859d 4 // パソコンへデータを送信する際の終端コードは '\n'
MikamiUitOpen 0:7ea2d228859d 5 //
MikamiUitOpen 0:7ea2d228859d 6 // 2021/07/04, Copyright (c) 2021 MIKAMI, Naoki
MikamiUitOpen 0:7ea2d228859d 7 //------------------------------------------------------------------------------
MikamiUitOpen 0:7ea2d228859d 8
MikamiUitOpen 0:7ea2d228859d 9 #include "SerialRxTxIntr.hpp"
MikamiUitOpen 0:7ea2d228859d 10 using namespace Mikami;
MikamiUitOpen 0:7ea2d228859d 11
MikamiUitOpen 0:7ea2d228859d 12 int main()
MikamiUitOpen 0:7ea2d228859d 13 {
MikamiUitOpen 0:7ea2d228859d 14 DigitalOut myLed(LED1, 1); // LED に対応する出力ポート
MikamiUitOpen 0:7ea2d228859d 15 SerialRxTxIntr rxTx; // PC との通信用,ボーレート:9600 baud
MikamiUitOpen 0:7ea2d228859d 16 bool blinking = false;
MikamiUitOpen 0:7ea2d228859d 17
MikamiUitOpen 0:7ea2d228859d 18 while (true)
MikamiUitOpen 0:7ea2d228859d 19 {
MikamiUitOpen 0:7ea2d228859d 20 // 受信バッファのデータが有効であれば,送信された指令に対応する処理を行う
MikamiUitOpen 0:7ea2d228859d 21 if (rxTx.IsEol())
MikamiUitOpen 0:7ea2d228859d 22 {
MikamiUitOpen 0:7ea2d228859d 23 string str = rxTx.GetBuffer(); // 受信データ
MikamiUitOpen 0:7ea2d228859d 24
MikamiUitOpen 0:7ea2d228859d 25 // "LED_CTRLer" の受信に対して "ACK" を送信
MikamiUitOpen 0:7ea2d228859d 26 if (str == "LED_CTRLer")
MikamiUitOpen 0:7ea2d228859d 27 rxTx.TxString("ACK\n");
MikamiUitOpen 0:7ea2d228859d 28 else // "LED CTRLer" 以外の受信に対する処理
MikamiUitOpen 0:7ea2d228859d 29 {
MikamiUitOpen 0:7ea2d228859d 30 if (str == "ON") blinking = true;
MikamiUitOpen 0:7ea2d228859d 31 if (str == "OFF") blinking = false;
MikamiUitOpen 0:7ea2d228859d 32
MikamiUitOpen 0:7ea2d228859d 33 rxTx.TxString(str + "\n"); // 受信した文字列をそのまま送信
MikamiUitOpen 0:7ea2d228859d 34 }
MikamiUitOpen 0:7ea2d228859d 35 }
MikamiUitOpen 0:7ea2d228859d 36 if (blinking)
MikamiUitOpen 0:7ea2d228859d 37 {
MikamiUitOpen 0:7ea2d228859d 38 myLed = !myLed; // LED の点灯/消灯の切り替え
MikamiUitOpen 0:7ea2d228859d 39 wait(0.1); // 0.1秒のウェイト
MikamiUitOpen 0:7ea2d228859d 40 }
MikamiUitOpen 0:7ea2d228859d 41 }
MikamiUitOpen 0:7ea2d228859d 42 }