Nucleo ボードの USB コネクタに対応するシリアルポート受送信割込みで,複数のキャラクタ受送信をサポ-トするクラス. このライブラリを登録した際のプログラム: Demo_F446_AD_DA_Ctrl.
Dependents: F446_FunctionGenerator F446_UpSampling_GraphicEqualizer F446_UpSampling_ReverbSystem F446_UpSampling_FrqShifter_Weaver ... more
Diff: SerialTxIntr.cpp
- Revision:
- 11:7f5b88c8bd6a
- Parent:
- 9:a90a9abeaea0
- Child:
- 13:deeef404ff49
--- a/SerialTxIntr.cpp Mon Jan 13 09:04:59 2020 +0000 +++ b/SerialTxIntr.cpp Mon Jan 27 06:57:49 2020 +0000 @@ -4,7 +4,7 @@ // // ボーレートのデフォルト値は 9,600 boud // -// 2018/09/28, Copyright (c) 2018 MIKAMI, Naoki +// 2020/01/27, Copyright (c) 2020 MIKAMI, Naoki //------------------------------------------------------------- #include "SerialTxIntr.hpp" @@ -12,7 +12,7 @@ namespace Mikami { // コンストラクタ - SerialTxIntr::SerialTxIntr(Serial &tx) : tx_(tx) + SerialTxIntr::SerialTxIntr(Serial &tx) : tx_(tx), USART_(USART2) { tx_.attach(callback(this, &SerialTxIntr::TxIsr), Serial::TxIrq); } @@ -20,14 +20,14 @@ // 送信データ書き込み void SerialTxIntr::TxWrite(char c) { - USART2->CR1 &= ~USART_CR1_TXEIE; // 送信割込み禁止 + USART_->CR1 &= ~USART_CR1_TXEIE; // 送信割込み禁止 // 送信レジスタ (DR) が空でかつ送信バッファが空かどうか調べる if ( que_.empty() && // 両者が空の場合 - ((USART2->SR && USART_SR_TXE_Msk) == USART_SR_TXE) ) - USART2->DR = c; // 送信レジスタにデータを書き込む + ((USART_->SR && USART_SR_TXE_Msk) == USART_SR_TXE) ) + Write(c); // 送信レジスタにデータを書き込む else // 少なくとも一方が空ではない場合 que_.push(c); // 送信バッファにデータを格納 - USART2->CR1 |= USART_CR1_TXEIE; // 送信割込み許可 + USART_->CR1 |= USART_CR1_TXEIE; // 送信割込み許可 } // 文字列の送信 @@ -42,10 +42,10 @@ { if (!que_.empty()) { - USART2->DR = que_.front(); // 送信用バッファから取り出したデータを送信レジスタへ書き込む - que_.pop(); // 先頭のデータを消去 + Write(que_.front()); // 送信用バッファから取り出したデータを送信レジスタへ書き込む + que_.pop(); // 先頭のデータを消去 } else - USART2->CR1 &= ~USART_CR1_TXEIE; // 送信割込み禁止 + USART_->CR1 &= ~USART_CR1_TXEIE; // 送信割込み禁止 } } \ No newline at end of file