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

Dependents:   F446_FunctionGenerator F446_UpSampling_GraphicEqualizer F446_UpSampling_ReverbSystem F446_UpSampling_FrqShifter_Weaver ... more

Committer:
MikamiUitOpen
Date:
Mon Apr 12 11:49:16 2021 +0000
Revision:
14:268977533f95
Parent:
13:deeef404ff49
15

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:6b652858f92d 1 //-------------------------------------------------------------
MikamiUitOpen 0:6b652858f92d 2 // Nucleo ボードの USB コネクタに対応するシリアルポート送信割込みで
MikamiUitOpen 0:6b652858f92d 3 // キャラクタの送信をサポ-トするクラス
MikamiUitOpen 0:6b652858f92d 4 //
MikamiUitOpen 13:deeef404ff49 5 // 2020/02/05, Copyright (c) 2020 MIKAMI, Naoki
MikamiUitOpen 0:6b652858f92d 6 //-------------------------------------------------------------
MikamiUitOpen 0:6b652858f92d 7
MikamiUitOpen 0:6b652858f92d 8 #include "mbed.h"
MikamiUitOpen 0:6b652858f92d 9 #include <queue>
MikamiUitOpen 6:8084247806a4 10 #include <string>
MikamiUitOpen 0:6b652858f92d 11
MikamiUitOpen 0:6b652858f92d 12 #ifndef SERIAL_TX_INTR_HPP
MikamiUitOpen 0:6b652858f92d 13 #define SERIAL_TX_INTR_HPP
MikamiUitOpen 0:6b652858f92d 14
MikamiUitOpen 4:fb847a82f735 15 namespace Mikami
MikamiUitOpen 0:6b652858f92d 16 {
MikamiUitOpen 4:fb847a82f735 17 class SerialTxIntr
MikamiUitOpen 4:fb847a82f735 18 {
MikamiUitOpen 4:fb847a82f735 19 public:
MikamiUitOpen 8:8f6e9351f313 20 explicit SerialTxIntr(Serial &tx); // コンストラクタ
MikamiUitOpen 13:deeef404ff49 21 void TxChar(char c); // 1文字の送信
MikamiUitOpen 6:8084247806a4 22 void TxString(string str); // 文字列の送信
MikamiUitOpen 0:6b652858f92d 23
MikamiUitOpen 4:fb847a82f735 24 private:
MikamiUitOpen 5:151d281afa55 25 Serial &tx_; // シリアルポートに対応するオブジェクトの参照
MikamiUitOpen 10:6525f1c28ef6 26 queue<char> que_; // FIFO による送信用バッファ
MikamiUitOpen 11:7f5b88c8bd6a 27 USART_TypeDef* const USART_;
MikamiUitOpen 0:6b652858f92d 28
MikamiUitOpen 13:deeef404ff49 29 // TDR へ書込み
MikamiUitOpen 13:deeef404ff49 30 void WriteTDR(char ch) { USART_->DR = ch; }
MikamiUitOpen 13:deeef404ff49 31 // 送信割込み許可
MikamiUitOpen 13:deeef404ff49 32 void EnableTxIntr() { USART_->CR1 |= USART_CR1_TXEIE; }
MikamiUitOpen 13:deeef404ff49 33 // 送信割込み禁止
MikamiUitOpen 13:deeef404ff49 34 void DisableTxIntr() { USART_->CR1 &= ~USART_CR1_TXEIE; }
MikamiUitOpen 13:deeef404ff49 35 // TDR が空の場合に true を返す
MikamiUitOpen 13:deeef404ff49 36 bool IsTdrEmpty()
MikamiUitOpen 13:deeef404ff49 37 { return (USART_->SR && USART_SR_TXE_Msk) == USART_SR_TXE; }
MikamiUitOpen 8:8f6e9351f313 38
MikamiUitOpen 13:deeef404ff49 39 void TxIsr(); // シリアルポート送信割込みサービスルーチン
MikamiUitOpen 13:deeef404ff49 40
MikamiUitOpen 13:deeef404ff49 41 // コピー・コンストラクタ,代入演算子の禁止のため
MikamiUitOpen 8:8f6e9351f313 42 SerialTxIntr(const SerialTxIntr&);
MikamiUitOpen 8:8f6e9351f313 43 SerialTxIntr& operator=(const SerialTxIntr&);
MikamiUitOpen 4:fb847a82f735 44 };
MikamiUitOpen 4:fb847a82f735 45 }
MikamiUitOpen 9:a90a9abeaea0 46 #endif // SERIAL_TX_INTR_HPP