CQエレクトロニクス・セミナ「実習・マイコンを動かしながら学ぶディジタル・フィルタ」で使うプログラムを,入力として STM32F746 の内蔵 ADC を使うように変更したもの. http://seminar.cqpub.co.jp/ccm/ES18-0020

Dependencies:   mbed Array_Matrix BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG

Committer:
MikamiUitOpen
Date:
Mon Mar 12 05:10:31 2018 +0000
Revision:
2:dd48e1e59daa
Parent:
0:ab7a35d87173
3

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:ab7a35d87173 1 //----------------------------------------------------------
MikamiUitOpen 0:ab7a35d87173 2 // Simultanuous AD Conversion by interrupt using
MikamiUitOpen 0:ab7a35d87173 3 // ADC1 and ADC3 on STM32F746 ---- Header
MikamiUitOpen 0:ab7a35d87173 4 //
MikamiUitOpen 0:ab7a35d87173 5 // STM32F746 の ADC1, ADC3 を使って同時に AD 変換を開始し,
MikamiUitOpen 0:ab7a35d87173 6 // 割り込みによりアナログ信号を入力するクラス(ヘッダ)
MikamiUitOpen 0:ab7a35d87173 7 // AdcDual クラスの派生クラス
MikamiUitOpen 0:ab7a35d87173 8 //
MikamiUitOpen 0:ab7a35d87173 9 // 2017/08/16, Copyright (c) 2017 MIKAMI, Naoki
MikamiUitOpen 0:ab7a35d87173 10 //----------------------------------------------------------
MikamiUitOpen 0:ab7a35d87173 11
MikamiUitOpen 0:ab7a35d87173 12 #ifndef F746_ADC_DUAL_INTERRUPT_HPP
MikamiUitOpen 0:ab7a35d87173 13 #define F746_ADC_DUAL_INTERRUPT_HPP
MikamiUitOpen 0:ab7a35d87173 14
MikamiUitOpen 0:ab7a35d87173 15 #include "F746_ADC.hpp"
MikamiUitOpen 0:ab7a35d87173 16
MikamiUitOpen 0:ab7a35d87173 17 namespace Mikami
MikamiUitOpen 0:ab7a35d87173 18 {
MikamiUitOpen 0:ab7a35d87173 19 class AdcDual_Intr : public AdcDual
MikamiUitOpen 0:ab7a35d87173 20 {
MikamiUitOpen 0:ab7a35d87173 21 public:
MikamiUitOpen 0:ab7a35d87173 22 explicit AdcDual_Intr(int frequency) : AdcDual(frequency)
MikamiUitOpen 0:ab7a35d87173 23 { ADC1->CR1 |= ADC_CR1_EOCIE; }
MikamiUitOpen 0:ab7a35d87173 24
MikamiUitOpen 0:ab7a35d87173 25 virtual ~AdcDual_Intr() {}
MikamiUitOpen 0:ab7a35d87173 26
MikamiUitOpen 0:ab7a35d87173 27 // -1.0f <= ad1, ad2 <= 1.0f
MikamiUitOpen 0:ab7a35d87173 28 virtual void Read(float &ad1, float &ad2)
MikamiUitOpen 0:ab7a35d87173 29 {
MikamiUitOpen 0:ab7a35d87173 30 ad1 = ToFloat(ADC1->DR);
MikamiUitOpen 0:ab7a35d87173 31 ad2 = ToFloat(ADC3->DR);
MikamiUitOpen 0:ab7a35d87173 32 }
MikamiUitOpen 0:ab7a35d87173 33
MikamiUitOpen 0:ab7a35d87173 34 // 0 <= ad1, ad2 <= 4095
MikamiUitOpen 0:ab7a35d87173 35 virtual void Read(uint16_t &ad1, uint16_t &ad2)
MikamiUitOpen 0:ab7a35d87173 36 {
MikamiUitOpen 0:ab7a35d87173 37 ad1 = ADC1->DR;
MikamiUitOpen 0:ab7a35d87173 38 ad2 = ADC3->DR;
MikamiUitOpen 0:ab7a35d87173 39 }
MikamiUitOpen 0:ab7a35d87173 40
MikamiUitOpen 0:ab7a35d87173 41 // Set interrupt vector
MikamiUitOpen 0:ab7a35d87173 42 void SetIntrVec(void (*Func)())
MikamiUitOpen 0:ab7a35d87173 43 {
MikamiUitOpen 0:ab7a35d87173 44 NVIC_SetVector(ADC_IRQn, (uint32_t)Func); // See "cmsis_nvic.h"
MikamiUitOpen 0:ab7a35d87173 45 }
MikamiUitOpen 0:ab7a35d87173 46
MikamiUitOpen 0:ab7a35d87173 47 void EnableAdcIntr()
MikamiUitOpen 0:ab7a35d87173 48 {
MikamiUitOpen 0:ab7a35d87173 49 NVIC_EnableIRQ(ADC_IRQn); // See "core_cm7.h"
MikamiUitOpen 0:ab7a35d87173 50 }
MikamiUitOpen 0:ab7a35d87173 51
MikamiUitOpen 0:ab7a35d87173 52 void DisableAdcIntr()
MikamiUitOpen 0:ab7a35d87173 53 {
MikamiUitOpen 0:ab7a35d87173 54 NVIC_DisableIRQ(ADC_IRQn); // See "core_cm7.h"
MikamiUitOpen 0:ab7a35d87173 55 }
MikamiUitOpen 0:ab7a35d87173 56
MikamiUitOpen 0:ab7a35d87173 57 private:
MikamiUitOpen 0:ab7a35d87173 58 // for inhibition of copy constructor
MikamiUitOpen 0:ab7a35d87173 59 AdcDual_Intr(const AdcDual_Intr&);
MikamiUitOpen 0:ab7a35d87173 60 // for inhibition of substitute operator
MikamiUitOpen 0:ab7a35d87173 61 AdcDual_Intr& operator=(const AdcDual_Intr&);
MikamiUitOpen 0:ab7a35d87173 62 };
MikamiUitOpen 0:ab7a35d87173 63 }
MikamiUitOpen 0:ab7a35d87173 64 #endif // F746_ADC_DUAL_INTERRUPT_HPP
MikamiUitOpen 0:ab7a35d87173 65