Nucleo ボードの USB コネクタに対応するシリアルポート受送信割込みで,複数のキャラクタ受送信をサポ-トするクラス.   このライブラリを登録した際のプログラム: Demo_F446_AD_DA_Ctrl.

Dependents:   F446_FunctionGenerator F446_UpSampling_GraphicEqualizer F446_UpSampling_ReverbSystem F446_UpSampling_FrqShifter_Weaver ... more

Revision:
4:fb847a82f735
Parent:
0:6b652858f92d
Child:
5:151d281afa55
--- a/SerialTxIntr.cpp	Fri Sep 07 12:55:52 2018 +0000
+++ b/SerialTxIntr.cpp	Tue Sep 18 00:13:29 2018 +0000
@@ -4,41 +4,44 @@
 //
 //  ボーレートのデフォルト値は 9,600 boud
 //
-//  2018/05/29, Copyright (c) 2018 MIKAMI, Naoki
+//  2018/09/18, Copyright (c) 2018 MIKAMI, Naoki
 //-------------------------------------------------------------
 
 #include "SerialTxIntr.hpp"
 
-// コンストラクタ
-SerialTxIntr::SerialTxIntr(Serial &tx) : tx_(tx)
-{
-    tx_.attach(callback(this, &SerialTxIntr::TxIsr), Serial::TxIrq);
-}
-    
-// 送信データ書き込み
-void SerialTxIntr::TxWrite(char c)
+namespace Mikami
 {
-    USART2->CR1 &= ~USART_CR1_TXEIE;    // 送信割込み禁止
-    // 送信レジスタ (DR) が空でかつ送信バッファが空かどうか調べる
-    if ( que_.empty() &&    // 両者が空の場合
-         ((USART2->SR && USART_SR_TXE_Msk) == USART_SR_TXE) )    
-        USART2->DR = c;     // 送信レジスタにデータを書き込む
-    else                    // 少なくとも一方が空ではない場合
-        que_.push(c);       // 送信バッファにデータを格納
-    USART2->CR1 |= USART_CR1_TXEIE;     // 送信割込み許可
-}
+    // コンストラクタ
+    SerialTxIntr::SerialTxIntr(Serial &tx) : tx_(tx)
+    {
+        tx_.attach(callback(this, &SerialTxIntr::TxIsr), Serial::TxIrq);
+    }
     
-// シリアルポート送信割込みサービスルーチン
-void SerialTxIntr::TxIsr()
-{
-    if (!que_.empty())
+    // 送信データ書き込み
+    void SerialTxIntr::TxWrite(char c)
     {
-        USART2->DR = que_.front();  // 送信用バッファから取り出したデータを送信レジスタへ書き込む
-        que_.pop();                 // 先頭のデータを消去
+        USART2->CR1 &= ~USART_CR1_TXEIE;    // 送信割込み禁止
+        // 送信レジスタ (DR) が空でかつ送信バッファが空かどうか調べる
+        if ( que_.empty() &&    // 両者が空の場合
+             ((USART2->SR && USART_SR_TXE_Msk) == USART_SR_TXE) )    
+            USART2->DR = c;     // 送信レジスタにデータを書き込む
+        else                    // 少なくとも一方が空ではない場合
+            que_.push(c);       // 送信バッファにデータを格納
+        USART2->CR1 |= USART_CR1_TXEIE;     // 送信割込み許可
     }
-    else
-        USART2->CR1 &= ~USART_CR1_TXEIE;    // 送信割込み禁止
+    
+    // シリアルポート送信割込みサービスルーチン
+    void SerialTxIntr::TxIsr()
+    {
+        if (!que_.empty())
+        {
+            USART2->DR = que_.front();  // 送信用バッファから取り出したデータを送信レジスタへ書き込む
+            que_.pop();                 // 先頭のデータを消去
+        }
+        else
+            USART2->CR1 &= ~USART_CR1_TXEIE;    // 送信割込み禁止
+    }
+
+    // static メンバの実体の宣言/初期化
+    queue<char> SerialTxIntr::que_;
 }
-
-// static メンバの実体の宣言/初期化
-queue<char> SerialTxIntr::que_;