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
DSP_AdcDualIntr.hpp@0:c02c700a8ecf, 2020-09-22 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Tue Sep 22 04:52:53 2020 +0000
- Revision:
- 0:c02c700a8ecf
- Child:
- 1:e1c5baa559de
1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MikamiUitOpen | 0:c02c700a8ecf | 1 | //------------------------------------------------------------- |
MikamiUitOpen | 0:c02c700a8ecf | 2 | // STM32F446 内蔵 ADC を割り込み方式で使うための派生クラス |
MikamiUitOpen | 0:c02c700a8ecf | 3 | // 基底クラス: DspAdcDual_Base |
MikamiUitOpen | 0:c02c700a8ecf | 4 | // |
MikamiUitOpen | 0:c02c700a8ecf | 5 | // 2020/09/22, Copyright (c) 2020 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 | 0:c02c700a8ecf | 44 | void EnableAdcIntr() { NVIC_EnableIRQ(ADC_IRQn); } |
MikamiUitOpen | 0:c02c700a8ecf | 45 | |
MikamiUitOpen | 0:c02c700a8ecf | 46 | // ADC 割込みを無効にする |
MikamiUitOpen | 0:c02c700a8ecf | 47 | void DisableAdcIntr() { 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 |