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

Dependencies:   mbed SerialTxRxIntr

Files at this revision

API Documentation at this revision

Comitter:
MikamiUitOpen
Date:
Thu Sep 09 08:42:03 2021 +0000
Commit message:
1

Changed in this revision

SerialTxRxIntr.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SerialTxRxIntr.lib	Thu Sep 09 08:42:03 2021 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/MikamiUitOpen/code/SerialTxRxIntr/#268977533f95
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Sep 09 08:42:03 2021 +0000
@@ -0,0 +1,42 @@
+//------------------------------------------------------------------------------
+//  Nucleo-F446 と PC 間の通信を利用するプログラムの例
+//  マイコンボード上の LED の点滅のコントロール:起動時は点灯状態
+//      パソコンへデータを送信する際の終端コードは '\n'
+//
+//  2021/07/04, Copyright (c) 2021 MIKAMI, Naoki
+//------------------------------------------------------------------------------
+
+#include "SerialRxTxIntr.hpp"
+using namespace Mikami;
+
+int main()
+{
+    DigitalOut myLed(LED1, 1);  // LED に対応する出力ポート
+    SerialRxTxIntr rxTx;        // PC との通信用,ボーレート:9600 baud
+    bool blinking = false;
+
+    while (true)
+    {
+        // 受信バッファのデータが有効であれば,送信された指令に対応する処理を行う
+        if (rxTx.IsEol())
+        {
+            string str = rxTx.GetBuffer();  // 受信データ
+
+            // "LED_CTRLer" の受信に対して "ACK" を送信
+            if (str == "LED_CTRLer")
+                rxTx.TxString("ACK\n");
+            else    // "LED CTRLer" 以外の受信に対する処理
+            {
+                if (str == "ON")  blinking = true;
+                if (str == "OFF") blinking = false;
+                
+                rxTx.TxString(str + "\n");  // 受信した文字列をそのまま送信
+            }
+        }
+        if (blinking)
+        {
+            myLed = !myLed; // LED の点灯/消灯の切り替え
+            wait(0.1);      // 0.1秒のウェイト
+        }
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Thu Sep 09 08:42:03 2021 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400
\ No newline at end of file