This commit is contained in:
Attila Body 2025-06-08 14:17:59 +02:00
parent bc01b1f0e8
commit 3957af107d
Signed by: abody
GPG key ID: BD0C6214E68FB5CF
235 changed files with 159562 additions and 189150 deletions

View file

@ -0,0 +1,38 @@
/*
* llmemcpydma.cpp
*
* Created on: Nov 4, 2019
* Author: abody
*/
#include <f4ll/memcpy_dma.h>
namespace f4ll {
MemcpyDma::MemcpyDma(DMA_TypeDef *dma, uint32_t stream)
: dma_helper(dma, stream)
{
LL_DMA_EnableIT_TC(dma, stream);
}
void *MemcpyDma::Copy(void *dst, void const *src, uint16_t length)
{
LL_DMA_SetM2MSrcAddress(GetDma(), GetStream(), (uint32_t)src);
LL_DMA_SetM2MDstAddress(GetDma(), GetStream(), (uint32_t)dst);
LL_DMA_SetDataLength(GetDma(), GetStream(), (length + 3) / 4);
m_busy = 1;
LL_DMA_EnableStream(GetDma(), GetStream());
while (m_busy)
;
return dst;
}
void MemcpyDma::DmaTransferCompleted()
{
if (*GetIsReg() & GetTcMask()) { // DMA transfer complete
*GetIfcReg() = GetTcMask();
LL_DMA_DisableStream(GetDma(), GetStream());
m_busy = 0;
}
}
} /* namespace f4ll */