diff --git a/library/stm32f072xb/dma/abstract-dma/abstract-dma-init.hpp b/library/stm32f072xb/dma/abstract-dma/abstract-dma-init.hpp
index 22a65d0a4024a1511eade2b220d170697d515e2e..48223f19abc0dddb7c0276c690eb254440383190 100644
--- a/library/stm32f072xb/dma/abstract-dma/abstract-dma-init.hpp
+++ b/library/stm32f072xb/dma/abstract-dma/abstract-dma-init.hpp
@@ -15,7 +15,7 @@ struct AbstractDmaInit {
 	const DmaMemorySize memorySize;
 	const DmaPeripheralIncrement peripheralIncrement;
 	const DmaPeripheralSize peripheralSize;
-	const uint8_t* buffer;
+	volatile const uint8_t* buffer;
 	const uint16_t bufferSize;
 };
 
diff --git a/library/stm32f072xb/dma/abstract-dma/abstract-dma.cpp b/library/stm32f072xb/dma/abstract-dma/abstract-dma.cpp
index ad0f160f04b1e6723d7d49bcdfb20be785513e01..f4176d6b22cab8b8141bafbc8b46e31d55f0b688 100644
--- a/library/stm32f072xb/dma/abstract-dma/abstract-dma.cpp
+++ b/library/stm32f072xb/dma/abstract-dma/abstract-dma.cpp
@@ -50,7 +50,7 @@ void AbstractDma::setPeripheral(DmaPeripheral peripheral) {
 	}
 }
 
-void AbstractDma::setMemory(const uint8_t* buffer) {
+void AbstractDma::setMemory(volatile const uint8_t* buffer) {
 	WRITE_REG(_dmaChannel->CMAR, (uint32_t)(buffer));
 }
 
diff --git a/library/stm32f072xb/dma/abstract-dma/abstract-dma.hpp b/library/stm32f072xb/dma/abstract-dma/abstract-dma.hpp
index 1a60dd5248f1334280ff991842c4396b515cb501..c6987a3e5050ecf893d27aee32775eb70a8f72c1 100644
--- a/library/stm32f072xb/dma/abstract-dma/abstract-dma.hpp
+++ b/library/stm32f072xb/dma/abstract-dma/abstract-dma.hpp
@@ -18,7 +18,7 @@ class AbstractDma {
 
    private:
 	void setPeripheral(DmaPeripheral peripheral);
-	void setMemory(const uint8_t* buffer);
+	void setMemory(volatile const uint8_t* buffer);
 	void setNumberOfDataTransfer(uint16_t numberOfDataTransfer);
 	void setDirection(DmaDirection direction);
 	void setCircularMode(DmaCircularMode circularMode);