STM32F446内蔵のADC, DAC を 2 チャンネルで使うためのライブラリの使用例. Example program of library for build-in ADC and DAC in STM32F446 using with dual channels.

Dependencies:   mbed SerialTxRxIntr DSP_ADDA_Dual

Revision:
0:c370b7c5a6ad
Child:
1:eb4a0b916723
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Sep 22 04:53:59 2020 +0000
@@ -0,0 +1,67 @@
+//----------------------------------------------------------------------
+//  NUCLEO-F446 で STM32F446 内蔵の ADC, DAC のためのクラスのデモプログラム
+//      使用するクラス:DspAdcDual_Polling, DspDacDual, DspAdcDual_Intr
+//      処理の内容:AD 変換器からの入力をそのまま DA 変換器に出力する
+//      ポーリング方式と割り込み方式の2つの例を示す
+//
+//  2020/09/22, Copyright (c) 2020 MIKAMI, Naoki
+//----------------------------------------------------------------------
+
+#include "DSP_DacDual.hpp"
+// 割り込みの例を有効にする場合,次の #define 文を有効にすること
+#define ADC_EXAMPLE_OF_INTERRUPT
+
+//----------------------------------------------------------------
+// ポーリングを使う例
+#ifndef ADC_EXAMPLE_OF_INTERRUPT
+#include "DSP_AdcDualPolling.hpp"
+using namespace Mikami;
+
+int main()
+{
+    const float FS = 10;    // 標本化周波数: 10 kHz
+    DspAdcDualPolling myAdc(FS, A0, A1);
+    DspDacDual myDac;
+
+    printf("\r\nUsing polling\r\n");
+    while (true)
+    {
+        // float 型の例
+        float sn1, sn2;
+        myAdc.Read(sn1, sn2);
+        myDac.Write(sn1, sn2);
+    }
+}
+
+//----------------------------------------------------------------
+// ADC 変換終了割り込みを使う例
+#else
+#include "DSP_AdcDualIntr.hpp"
+using namespace Mikami;
+
+const float FS = 10;    // 標本化周波数: 10 kHz
+DspAdcDualIntr myAdc_(FS, A0, A1);
+DspDacDual myDac_;
+
+// ADC 変換終了割り込みに対する割り込みサービス・ルーチン
+void AdcIsr()
+{
+    float sn1, sn2;
+    myAdc_.Read(sn1, sn2);
+    myDac_.Write(sn1, sn2);
+}
+
+int main()
+{
+    printf("\r\nUsing interrupt\r\n");
+
+    myAdc_.SetIntrVec(&AdcIsr);
+
+    uint32_t n = 0;
+    while (true)
+    {
+        printf("%d\r\n", n++);
+        wait(1);
+    }
+}
+#endif
\ No newline at end of file