![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
STM32F446内蔵のADC, DAC用ライブラリの使用例. Example program of library for build-in ADC and DAC in STM32F446.
main.cpp@3:4173de2a1e88, 2020-12-20 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Sun Dec 20 08:04:55 2020 +0000
- Revision:
- 3:4173de2a1e88
- Parent:
- 2:7dfcf985dfc1
4
Who changed what in which revision?
User | Revision | Line number | New 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 | 3:4173de2a1e88 | 8 | // 2020/12/20, 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 | 2:7dfcf985dfc1 | 15 | const float 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 | 3:4173de2a1e88 | 28 | DspAdcPolling 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 | 3:4173de2a1e88 | 43 | DspAdcIntr 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 |