STM32 DMA 问题 10
新手学单片机,开启了DMA用于控制DAC输出。已经把DMA连到DAC上,然后怎么用不会,求解答...
新手学单片机,开启了DMA 用于控制DAC输出。已经把DMA连到DAC上,然后怎么用不会,求解答
展开
1个回答
展开全部
下面的描述可以帮你理解DMA,具体使用自行查手册,读代码
DMA每一个通道可以视作一个独立的外设, 有一个源地址寄存器(),一个目标地址寄存器,
一个传输次数寄存器,若干控制寄存器
可以将传输过程视作一个额外的cpu在启动之后,开始执行如下代码:
UDdst * pDst; //UDdst可以是 u8 u16 u32 任意
UDsrc * pDst; //UDsrc 可以是 u8 u16 u32
while(TransCNT)
{
if(触发了一次传输) //一般来说指定了特定硬件功能(P2P,P2m,M2P)的话, 触发型号是外设电路给到DMA电路的,有时候启动传输会作为传输过程的第一个触发信号(比如用M2P模式发送若干数据至串口,启动时直接触发一次,后续触发则是传输完成时串口外设电路发送给DMA)
{
*pDst = *pSrc; TransCNT--;
if(源地址自动增 ==true)pSrc++;
if(目标地址自动增==true)pDst++;
}
}
DMA每一个通道可以视作一个独立的外设, 有一个源地址寄存器(),一个目标地址寄存器,
一个传输次数寄存器,若干控制寄存器
可以将传输过程视作一个额外的cpu在启动之后,开始执行如下代码:
UDdst * pDst; //UDdst可以是 u8 u16 u32 任意
UDsrc * pDst; //UDsrc 可以是 u8 u16 u32
while(TransCNT)
{
if(触发了一次传输) //一般来说指定了特定硬件功能(P2P,P2m,M2P)的话, 触发型号是外设电路给到DMA电路的,有时候启动传输会作为传输过程的第一个触发信号(比如用M2P模式发送若干数据至串口,启动时直接触发一次,后续触发则是传输完成时串口外设电路发送给DMA)
{
*pDst = *pSrc; TransCNT--;
if(源地址自动增 ==true)pSrc++;
if(目标地址自动增==true)pDst++;
}
}
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
STM32是一款广泛应用于消费类电子、汽车、工业和物联网领域的低功耗嵌入式系统芯片。ST公司推出了多个STM32系列,以满足不同应用需求。以下是ST公司主要的STM32系列:1. STM32WB系列:这是ST公司推出的第一款支持2.4GHz...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询