Example of use of library for build-in ADC and DAC in STM32F446 mounted on Nucleo F446RE. Nucleo F446RE に搭載されている STM32F446 の内蔵 ADC, DAC 用のライブラリの使用例.
main.cpp@0:d1d504410da6, 2016-11-11 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Fri Nov 11 06:34:26 2016 +0000
- Revision:
- 0:d1d504410da6
- Child:
- 1:e462cfe9476d
1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MikamiUitOpen | 0:d1d504410da6 | 1 | //---------------------------------------------------------------- |
MikamiUitOpen | 0:d1d504410da6 | 2 | // STM32F446 内蔵の ADC, DAC のためのクラスのデモプログラム |
MikamiUitOpen | 0:d1d504410da6 | 3 | // 使用するクラス:AdcDual, DacDual, AdcDualIntr |
MikamiUitOpen | 0:d1d504410da6 | 4 | // 処理の内容:AD 変換器からの入力をそのまま DA 変換器に出力する |
MikamiUitOpen | 0:d1d504410da6 | 5 | // ポーリング方式と割り込み方式の2つの例を示す |
MikamiUitOpen | 0:d1d504410da6 | 6 | // |
MikamiUitOpen | 0:d1d504410da6 | 7 | // 2016/11/11, Copyright (c) 2016 MIKAMI, Naoki |
MikamiUitOpen | 0:d1d504410da6 | 8 | //---------------------------------------------------------------- |
MikamiUitOpen | 0:d1d504410da6 | 9 | |
MikamiUitOpen | 0:d1d504410da6 | 10 | #include "F446_DAC.hpp" |
MikamiUitOpen | 0:d1d504410da6 | 11 | using namespace Mikami; |
MikamiUitOpen | 0:d1d504410da6 | 12 | |
MikamiUitOpen | 0:d1d504410da6 | 13 | // 割り込みの例を有効にする場合,次の #define 文を有効にすること |
MikamiUitOpen | 0:d1d504410da6 | 14 | #define ADC_EXAMPLE_OF_INTERRUPT |
MikamiUitOpen | 0:d1d504410da6 | 15 | |
MikamiUitOpen | 0:d1d504410da6 | 16 | //---------------------------------------------------------------- |
MikamiUitOpen | 0:d1d504410da6 | 17 | // ポーリングを使う例 |
MikamiUitOpen | 0:d1d504410da6 | 18 | #ifndef ADC_EXAMPLE_OF_INTERRUPT |
MikamiUitOpen | 0:d1d504410da6 | 19 | #include "F446_ADC.hpp" |
MikamiUitOpen | 0:d1d504410da6 | 20 | |
MikamiUitOpen | 0:d1d504410da6 | 21 | int main() |
MikamiUitOpen | 0:d1d504410da6 | 22 | { |
MikamiUitOpen | 0:d1d504410da6 | 23 | const int FS = 10000; // Sampling frequency: 10 kHz |
MikamiUitOpen | 0:d1d504410da6 | 24 | AdcDual myAdc(FS); // See "F446_ADC.hpp" |
MikamiUitOpen | 0:d1d504410da6 | 25 | DacDual myDac; // See "F446_DAC.hpp" |
MikamiUitOpen | 0:d1d504410da6 | 26 | myDac.ScfClock(420000); // 出力の LPF の遮断周波数を 4.2 kHz に設定 |
MikamiUitOpen | 0:d1d504410da6 | 27 | |
MikamiUitOpen | 0:d1d504410da6 | 28 | printf("\r\nUsing polling\r\n"); |
MikamiUitOpen | 0:d1d504410da6 | 29 | while (true) |
MikamiUitOpen | 0:d1d504410da6 | 30 | { |
MikamiUitOpen | 0:d1d504410da6 | 31 | // float 型の例 |
MikamiUitOpen | 0:d1d504410da6 | 32 | float sn1, sn2; |
MikamiUitOpen | 0:d1d504410da6 | 33 | myAdc.Read(sn1, sn2); |
MikamiUitOpen | 0:d1d504410da6 | 34 | /* |
MikamiUitOpen | 0:d1d504410da6 | 35 | // uint16_t 型の例 |
MikamiUitOpen | 0:d1d504410da6 | 36 | uint16_t sn1, sn2; |
MikamiUitOpen | 0:d1d504410da6 | 37 | myAdc.Read(sn1, sn2); |
MikamiUitOpen | 0:d1d504410da6 | 38 | */ |
MikamiUitOpen | 0:d1d504410da6 | 39 | myDac.Write(sn1, sn2); |
MikamiUitOpen | 0:d1d504410da6 | 40 | } |
MikamiUitOpen | 0:d1d504410da6 | 41 | } |
MikamiUitOpen | 0:d1d504410da6 | 42 | |
MikamiUitOpen | 0:d1d504410da6 | 43 | //---------------------------------------------------------------- |
MikamiUitOpen | 0:d1d504410da6 | 44 | // ADC 変換終了割り込みを使う例 |
MikamiUitOpen | 0:d1d504410da6 | 45 | #else |
MikamiUitOpen | 0:d1d504410da6 | 46 | #include "F446_ADC_Interrupt.hpp" |
MikamiUitOpen | 0:d1d504410da6 | 47 | |
MikamiUitOpen | 0:d1d504410da6 | 48 | const int FS_ = 10000; // Sampling frequency: 10 kHz |
MikamiUitOpen | 0:d1d504410da6 | 49 | AdcDual_Intr myAdc_(FS_); // See "F446_ADC_Interrupt.hpp" |
MikamiUitOpen | 0:d1d504410da6 | 50 | DacDual myDac_; // See "F446_DAC.hpp" |
MikamiUitOpen | 0:d1d504410da6 | 51 | |
MikamiUitOpen | 0:d1d504410da6 | 52 | // ADC 変換終了割り込みに対する割り込みサービス・ルーチン |
MikamiUitOpen | 0:d1d504410da6 | 53 | void AdcIsr() |
MikamiUitOpen | 0:d1d504410da6 | 54 | { |
MikamiUitOpen | 0:d1d504410da6 | 55 | float sn1, sn2; |
MikamiUitOpen | 0:d1d504410da6 | 56 | myAdc_.Read(sn1, sn2); |
MikamiUitOpen | 0:d1d504410da6 | 57 | myDac_.Write(sn1, sn2); |
MikamiUitOpen | 0:d1d504410da6 | 58 | } |
MikamiUitOpen | 0:d1d504410da6 | 59 | |
MikamiUitOpen | 0:d1d504410da6 | 60 | int main() |
MikamiUitOpen | 0:d1d504410da6 | 61 | { |
MikamiUitOpen | 0:d1d504410da6 | 62 | printf("\r\nUsing interrupt\r\n"); |
MikamiUitOpen | 0:d1d504410da6 | 63 | |
MikamiUitOpen | 0:d1d504410da6 | 64 | myDac_.ScfClock(420000); // 出力の LPF の遮断周波数を 4.2 kHz に設定 |
MikamiUitOpen | 0:d1d504410da6 | 65 | // ADC 変換終了割り込みに対する割り込みサービス・ルーチンを割り当てる |
MikamiUitOpen | 0:d1d504410da6 | 66 | myAdc_.SetIntrVec(&AdcIsr); |
MikamiUitOpen | 0:d1d504410da6 | 67 | |
MikamiUitOpen | 0:d1d504410da6 | 68 | uint32_t n = 0; |
MikamiUitOpen | 0:d1d504410da6 | 69 | while (true) |
MikamiUitOpen | 0:d1d504410da6 | 70 | { |
MikamiUitOpen | 0:d1d504410da6 | 71 | printf("%d\r\n", n++); |
MikamiUitOpen | 0:d1d504410da6 | 72 | wait(1); |
MikamiUitOpen | 0:d1d504410da6 | 73 | } |
MikamiUitOpen | 0:d1d504410da6 | 74 | } |
MikamiUitOpen | 0:d1d504410da6 | 75 | #endif |