STM32F446 の内蔵 ADC, DAC を 2 チャンネルで使うためのライブラリ.このライブラリを登録した際のプログラム: Demo_DSP_ADDA_Dual. Library for build-in ADC and DAC in STM32F446 using with dual channels.

Dependents:   F446_DSP_Oscilloscope Demo_DSP_ADDA_Dual TrG_Oscilloscope

Committer:
MikamiUitOpen
Date:
Tue Jun 29 00:58:39 2021 +0000
Revision:
3:a3148d75c1ea
Parent:
1:e1c5baa559de
4

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:c02c700a8ecf 1 //-------------------------------------------------------------
MikamiUitOpen 0:c02c700a8ecf 2 // STM32F446 内蔵 ADC を割り込み方式で使うための派生クラス
MikamiUitOpen 1:e1c5baa559de 3 // 基底クラス: DspAdcDualBase
MikamiUitOpen 0:c02c700a8ecf 4 //
MikamiUitOpen 3:a3148d75c1ea 5 // 2021/06/29, Copyright (c) 2021 MIKAMI, Naoki
MikamiUitOpen 0:c02c700a8ecf 6 //-------------------------------------------------------------
MikamiUitOpen 0:c02c700a8ecf 7
MikamiUitOpen 0:c02c700a8ecf 8 #include "DSP_AdcDualBase.hpp"
MikamiUitOpen 0:c02c700a8ecf 9
MikamiUitOpen 0:c02c700a8ecf 10 #ifndef DSP_ADC_DUAL_INTERRUPT_HPP
MikamiUitOpen 0:c02c700a8ecf 11 #define DSP_ADC_DUAL_INTERRUPT_HPP
MikamiUitOpen 0:c02c700a8ecf 12
MikamiUitOpen 0:c02c700a8ecf 13 namespace Mikami
MikamiUitOpen 0:c02c700a8ecf 14 {
MikamiUitOpen 0:c02c700a8ecf 15 class DspAdcDualIntr : public DspAdcDualBase
MikamiUitOpen 0:c02c700a8ecf 16 {
MikamiUitOpen 0:c02c700a8ecf 17 public:
MikamiUitOpen 0:c02c700a8ecf 18 // コンストラクタ
MikamiUitOpen 0:c02c700a8ecf 19 // fSampling 標本化周波数 [kHz]
MikamiUitOpen 0:c02c700a8ecf 20 // pinCh1 チャンネル 1 に対応する入力ピンの名前
MikamiUitOpen 0:c02c700a8ecf 21 // pinCh2 チャンネル 2 に対応する入力ピンの名前
MikamiUitOpen 0:c02c700a8ecf 22 DspAdcDualIntr(float fSampling, PinName pinCh1, PinName pinCh2)
MikamiUitOpen 0:c02c700a8ecf 23 : DspAdcDualBase(fSampling, pinCh1, pinCh2)
MikamiUitOpen 0:c02c700a8ecf 24 { adcCh1_->CR1 |= ADC_CR1_EOCIE; }
MikamiUitOpen 0:c02c700a8ecf 25
MikamiUitOpen 0:c02c700a8ecf 26 virtual ~DspAdcDualIntr() {}
MikamiUitOpen 0:c02c700a8ecf 27
MikamiUitOpen 0:c02c700a8ecf 28 // AD 変換された値を読み込む
MikamiUitOpen 0:c02c700a8ecf 29 // -1.0f <= AD変換された値 < 1.0f
MikamiUitOpen 0:c02c700a8ecf 30 virtual void Read(float &ad1, float &ad2) const
MikamiUitOpen 0:c02c700a8ecf 31 {
MikamiUitOpen 0:c02c700a8ecf 32 ad1 = ToFloat(adcCh1_->DR);
MikamiUitOpen 0:c02c700a8ecf 33 ad2 = ToFloat(adcCh2_->DR);
MikamiUitOpen 0:c02c700a8ecf 34 }
MikamiUitOpen 0:c02c700a8ecf 35
MikamiUitOpen 0:c02c700a8ecf 36 // 割り込みベクタの設定と ADC 割り込みの有効化
MikamiUitOpen 0:c02c700a8ecf 37 void SetIntrVec(void (*Func)())
MikamiUitOpen 0:c02c700a8ecf 38 {
MikamiUitOpen 0:c02c700a8ecf 39 NVIC_SetVector(ADC_IRQn, (uint32_t)Func); // See "cmsis_nvic.h"
MikamiUitOpen 0:c02c700a8ecf 40 NVIC_EnableIRQ(ADC_IRQn); // See "core_cm4.h"
MikamiUitOpen 0:c02c700a8ecf 41 }
MikamiUitOpen 0:c02c700a8ecf 42
MikamiUitOpen 0:c02c700a8ecf 43 // ADC 割込みを有効にする
MikamiUitOpen 3:a3148d75c1ea 44 void EnableIntr() { NVIC_EnableIRQ(ADC_IRQn); }
MikamiUitOpen 0:c02c700a8ecf 45
MikamiUitOpen 0:c02c700a8ecf 46 // ADC 割込みを無効にする
MikamiUitOpen 3:a3148d75c1ea 47 void DisableIntr() { NVIC_DisableIRQ(ADC_IRQn); }
MikamiUitOpen 0:c02c700a8ecf 48
MikamiUitOpen 0:c02c700a8ecf 49 private:
MikamiUitOpen 0:c02c700a8ecf 50 // コピー・コンストラクタ,代入演算子の禁止のため
MikamiUitOpen 0:c02c700a8ecf 51 DspAdcDualIntr(const DspAdcDualIntr&);
MikamiUitOpen 0:c02c700a8ecf 52 DspAdcDualIntr& operator=(const DspAdcDualIntr&);
MikamiUitOpen 0:c02c700a8ecf 53 };
MikamiUitOpen 0:c02c700a8ecf 54 }
MikamiUitOpen 0:c02c700a8ecf 55 #endif // DSP_ADC_DUAL_INTERRUPT_HPP