distortos  v0.7.0
object-oriented C++ RTOS for microcontrollers
STM32-DMAv2-DmaChannelPeripheral.hpp
Go to the documentation of this file.
1 
12 #ifndef SOURCE_CHIP_STM32_PERIPHERALS_DMAV2_INCLUDE_DISTORTOS_CHIP_STM32_DMAV2_DMACHANNELPERIPHERAL_HPP_
13 #define SOURCE_CHIP_STM32_PERIPHERALS_DMAV2_INCLUDE_DISTORTOS_CHIP_STM32_DMAV2_DMACHANNELPERIPHERAL_HPP_
14 
16 
17 namespace distortos
18 {
19 
20 namespace chip
21 {
22 
25 {
26 public:
27 
35  constexpr DmaChannelPeripheral(const uintptr_t dmaBase, const uint8_t channelId) :
36  dmaChannelBase_{dmaBase + (DMA1_Stream0_BASE - DMA1_BASE) +
37  channelId * (DMA1_Stream1_BASE - DMA1_Stream0_BASE)},
38  channelId_{channelId}
39  {
40 
41  }
42 
47  uint8_t getChannelId() const
48  {
49  return channelId_;
50  }
51 
56  uint32_t readCr() const
57  {
58  return getDmaChannel().CR;
59  }
60 
65  uint32_t readFcr() const
66  {
67  return getDmaChannel().FCR;
68  }
69 
74  uint32_t readM0ar() const
75  {
76  return getDmaChannel().M0AR;
77  }
78 
83  uint32_t readM1ar() const
84  {
85  return getDmaChannel().M1AR;
86  }
87 
92  uint32_t readNdtr() const
93  {
94  return getDmaChannel().NDTR;
95  }
96 
101  uint32_t readPar() const
102  {
103  return getDmaChannel().PAR;
104  }
105 
112  void writeCr(const uint32_t cr) const
113  {
114  getDmaChannel().CR = cr;
115  }
116 
123  void writeFcr(const uint32_t fcr) const
124  {
125  getDmaChannel().FCR = fcr;
126  }
127 
134  void writeM0ar(const uint32_t m0ar) const
135  {
136  getDmaChannel().M0AR = m0ar;
137  }
138 
145  void writeM1ar(const uint32_t m1ar) const
146  {
147  getDmaChannel().M1AR = m1ar;
148  }
149 
156  void writeNdtr(const uint32_t ndtr) const
157  {
158  getDmaChannel().NDTR = ndtr;
159  }
160 
167  void writePar(const uint32_t par) const
168  {
169  getDmaChannel().PAR = par;
170  }
171 
172 private:
173 
178  DMA_Stream_TypeDef& getDmaChannel() const
179  {
180  return *reinterpret_cast<DMA_Stream_TypeDef*>(dmaChannelBase_);
181  }
182 
184  uintptr_t dmaChannelBase_;
185 
187  uint8_t channelId_;
188 };
189 
190 } // namespace chip
191 
192 } // namespace distortos
193 
194 #endif // SOURCE_CHIP_STM32_PERIPHERALS_DMAV2_INCLUDE_DISTORTOS_CHIP_STM32_DMAV2_DMACHANNELPERIPHERAL_HPP_
uint8_t channelId_
DMA channel identifier.
Definition: STM32-DMAv2-DmaChannelPeripheral.hpp:187
uint32_t readPar() const
Definition: STM32-DMAv2-DmaChannelPeripheral.hpp:101
void writePar(const uint32_t par) const
Writes value to PAR register.
Definition: STM32-DMAv2-DmaChannelPeripheral.hpp:167
uint32_t readM0ar() const
Definition: STM32-DMAv2-DmaChannelPeripheral.hpp:74
void writeNdtr(const uint32_t ndtr) const
Writes value to NDTR register.
Definition: STM32-DMAv2-DmaChannelPeripheral.hpp:156
void writeM0ar(const uint32_t m0ar) const
Writes value to M0AR register.
Definition: STM32-DMAv2-DmaChannelPeripheral.hpp:134
CMSIS proxy header for STM32F4.
DmaChannelPeripheral class is a raw DMA channel peripheral for DMAv2 in STM32.
Definition: STM32-DMAv2-DmaChannelPeripheral.hpp:24
uint32_t readNdtr() const
Definition: STM32-DMAv2-DmaChannelPeripheral.hpp:92
DMA_Stream_TypeDef & getDmaChannel() const
Definition: STM32-DMAv2-DmaChannelPeripheral.hpp:178
void writeCr(const uint32_t cr) const
Writes value to CR register.
Definition: STM32-DMAv2-DmaChannelPeripheral.hpp:112
uint32_t readFcr() const
Definition: STM32-DMAv2-DmaChannelPeripheral.hpp:65
Top-level namespace of distortos project.
Definition: buttons.hpp:33
uint32_t readCr() const
Definition: STM32-DMAv2-DmaChannelPeripheral.hpp:56
void writeFcr(const uint32_t fcr) const
Writes value to FCR register.
Definition: STM32-DMAv2-DmaChannelPeripheral.hpp:123
void writeM1ar(const uint32_t m1ar) const
Writes value to M1AR register.
Definition: STM32-DMAv2-DmaChannelPeripheral.hpp:145
uint32_t readM1ar() const
Definition: STM32-DMAv2-DmaChannelPeripheral.hpp:83
constexpr DmaChannelPeripheral(const uintptr_t dmaBase, const uint8_t channelId)
DmaChannelPeripheral's constructor.
Definition: STM32-DMAv2-DmaChannelPeripheral.hpp:35
uintptr_t dmaChannelBase_
base address of DMA channel peripheral
Definition: STM32-DMAv2-DmaChannelPeripheral.hpp:184
uint8_t getChannelId() const
Definition: STM32-DMAv2-DmaChannelPeripheral.hpp:47