Example of use of library for build-in ADC and DAC in STM32F446 mounted on Nucleo F446RE. Nucleo F446RE に搭載されている STM32F446 の内蔵 ADC, DAC 用のライブラリの使用例.

Dependencies:   F446_AD_DA mbed

Revision:
0:d1d504410da6
Child:
1:e462cfe9476d
diff -r 000000000000 -r d1d504410da6 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Nov 11 06:34:26 2016 +0000
@@ -0,0 +1,75 @@
+//----------------------------------------------------------------
+//  STM32F446 内蔵の ADC, DAC のためのクラスのデモプログラム
+//      使用するクラス:AdcDual, DacDual, AdcDualIntr
+//      処理の内容:AD 変換器からの入力をそのまま DA 変換器に出力する
+//      ポーリング方式と割り込み方式の2つの例を示す
+//
+//  2016/11/11, Copyright (c) 2016 MIKAMI, Naoki
+//----------------------------------------------------------------
+
+#include "F446_DAC.hpp"
+using namespace Mikami;
+
+// 割り込みの例を有効にする場合,次の #define 文を有効にすること
+#define ADC_EXAMPLE_OF_INTERRUPT
+
+//----------------------------------------------------------------
+// ポーリングを使う例
+#ifndef ADC_EXAMPLE_OF_INTERRUPT
+#include "F446_ADC.hpp"
+
+int main()
+{
+    const int FS = 10000;       // Sampling frequency: 10 kHz
+    AdcDual myAdc(FS);          // See "F446_ADC.hpp"
+    DacDual myDac;              // See "F446_DAC.hpp"
+    myDac.ScfClock(420000);     // 出力の LPF の遮断周波数を 4.2 kHz に設定
+
+    printf("\r\nUsing polling\r\n");
+    while (true)
+    {
+        // float 型の例
+        float sn1, sn2;
+        myAdc.Read(sn1, sn2);
+/*
+        // uint16_t 型の例
+        uint16_t sn1, sn2;
+        myAdc.Read(sn1, sn2);
+*/
+        myDac.Write(sn1, sn2);
+    }
+}
+
+//----------------------------------------------------------------
+// ADC 変換終了割り込みを使う例
+#else
+#include "F446_ADC_Interrupt.hpp"
+
+const int FS_ = 10000;      // Sampling frequency: 10 kHz
+AdcDual_Intr myAdc_(FS_);    // See "F446_ADC_Interrupt.hpp"
+DacDual myDac_;             // See "F446_DAC.hpp"
+
+// ADC 変換終了割り込みに対する割り込みサービス・ルーチン
+void AdcIsr()
+{
+    float sn1, sn2;
+    myAdc_.Read(sn1, sn2);
+    myDac_.Write(sn1, sn2);
+}
+
+int main()
+{
+    printf("\r\nUsing interrupt\r\n");
+
+    myDac_.ScfClock(420000);    // 出力の LPF の遮断周波数を 4.2 kHz に設定
+    // ADC 変換終了割り込みに対する割り込みサービス・ルーチンを割り当てる
+    myAdc_.SetIntrVec(&AdcIsr);
+
+    uint32_t n = 0;
+    while (true)
+    {
+        printf("%d\r\n", n++);
+        wait(1);
+    }
+}
+#endif