STM32F446内蔵のADC, DAC用ライブラリの使用例. Example program of library for build-in ADC and DAC in STM32F446.

Dependencies:   mbed DSP_ADDA

Committer:
MikamiUitOpen
Date:
Fri May 22 08:36:21 2020 +0000
Revision:
1:d9a29b4b7c33
Parent:
0:e60918d2054f
Child:
2:7dfcf985dfc1
2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:e60918d2054f 1 //----------------------------------------------------------------------
MikamiUitOpen 0:e60918d2054f 2 // STM32F446 内蔵の ADC, DAC のためのクラスのデモプログラム
MikamiUitOpen 0:e60918d2054f 3 // 使用するクラス:DspAdc_Polling, DspAdc_Intr, DspDac
MikamiUitOpen 0:e60918d2054f 4 // 処理の内容:AD 変換器からの入力をそのまま DA 変換器に出力する
MikamiUitOpen 0:e60918d2054f 5 //
MikamiUitOpen 0:e60918d2054f 6 // ポーリング方式と割込み方式の2つの例を示す
MikamiUitOpen 0:e60918d2054f 7 //
MikamiUitOpen 1:d9a29b4b7c33 8 // 2020/05/22, Copyright (c) 2020 MIKAMI, Naoki
MikamiUitOpen 0:e60918d2054f 9 //----------------------------------------------------------------------
MikamiUitOpen 0:e60918d2054f 10
MikamiUitOpen 0:e60918d2054f 11 #include "DSP_Dac.hpp" // DAC 用
MikamiUitOpen 0:e60918d2054f 12 using namespace Mikami;
MikamiUitOpen 0:e60918d2054f 13 #pragma diag_suppress 870 // マルチバイト文字使用の警告抑制のため
MikamiUitOpen 0:e60918d2054f 14
MikamiUitOpen 0:e60918d2054f 15 const int FS_ = 100; // 標本化周波数: 100 kHz
MikamiUitOpen 0:e60918d2054f 16 DspDac myDac_; // DA 変換器, 出力端子: A2(デフォルト)
MikamiUitOpen 0:e60918d2054f 17
MikamiUitOpen 0:e60918d2054f 18 // 割込みの例を有効にする場合,次の #define 文を有効にすること
MikamiUitOpen 0:e60918d2054f 19 //#define ADC_EXAMPLE_OF_INTERRUPT
MikamiUitOpen 0:e60918d2054f 20
MikamiUitOpen 0:e60918d2054f 21 //----------------------------------------------------------------
MikamiUitOpen 0:e60918d2054f 22 // ポーリングを使う例
MikamiUitOpen 0:e60918d2054f 23 #ifndef ADC_EXAMPLE_OF_INTERRUPT
MikamiUitOpen 0:e60918d2054f 24 #include "DSP_AdcPolling.hpp"
MikamiUitOpen 0:e60918d2054f 25
MikamiUitOpen 0:e60918d2054f 26 int main()
MikamiUitOpen 0:e60918d2054f 27 {
MikamiUitOpen 0:e60918d2054f 28 DspAdc_Polling myAdc(FS_, A1); // AD 変換器, ADC2使用(デフォルト)
MikamiUitOpen 0:e60918d2054f 29 printf("\r\nポーリング方式\r\n");
MikamiUitOpen 0:e60918d2054f 30
MikamiUitOpen 0:e60918d2054f 31 while (true)
MikamiUitOpen 0:e60918d2054f 32 {
MikamiUitOpen 0:e60918d2054f 33 float sn = myAdc.Read();
MikamiUitOpen 0:e60918d2054f 34 myDac_.Write(sn);
MikamiUitOpen 0:e60918d2054f 35 }
MikamiUitOpen 0:e60918d2054f 36 }
MikamiUitOpen 0:e60918d2054f 37
MikamiUitOpen 0:e60918d2054f 38 //----------------------------------------------------------------
MikamiUitOpen 0:e60918d2054f 39 // ADC 変換終了割込みを使う例
MikamiUitOpen 0:e60918d2054f 40 #else
MikamiUitOpen 0:e60918d2054f 41 #include "DSP_AdcIntr.hpp"
MikamiUitOpen 0:e60918d2054f 42
MikamiUitOpen 0:e60918d2054f 43 DspAdc_Intr myAdc_(FS_, A1); // AD 変換器, ADC2使用(デフォルト)
MikamiUitOpen 0:e60918d2054f 44
MikamiUitOpen 0:e60918d2054f 45 // ADC 変換終了割込みに対する割込みサービス・ルーチン
MikamiUitOpen 0:e60918d2054f 46 void AdcIsr()
MikamiUitOpen 0:e60918d2054f 47 {
MikamiUitOpen 0:e60918d2054f 48 float sn = myAdc_.Read();
MikamiUitOpen 0:e60918d2054f 49 myDac_.Write(sn);
MikamiUitOpen 0:e60918d2054f 50 }
MikamiUitOpen 0:e60918d2054f 51
MikamiUitOpen 0:e60918d2054f 52 int main()
MikamiUitOpen 0:e60918d2054f 53 {
MikamiUitOpen 0:e60918d2054f 54 printf("\r\n割込み方式\r\n");
MikamiUitOpen 0:e60918d2054f 55
MikamiUitOpen 0:e60918d2054f 56 // ADC 変換終了割込みに対する割込みサービス・ルーチンを割り当てる
MikamiUitOpen 0:e60918d2054f 57 myAdc_.SetIntrVec(&AdcIsr);
MikamiUitOpen 0:e60918d2054f 58
MikamiUitOpen 0:e60918d2054f 59 uint32_t n = 0;
MikamiUitOpen 0:e60918d2054f 60 while (true)
MikamiUitOpen 0:e60918d2054f 61 {
MikamiUitOpen 0:e60918d2054f 62 printf("%d\r\n", n++);
MikamiUitOpen 0:e60918d2054f 63 wait(1);
MikamiUitOpen 0:e60918d2054f 64 }
MikamiUitOpen 0:e60918d2054f 65 }
MikamiUitOpen 0:e60918d2054f 66 #endif