前言
前面介绍了DMA的安装和初始化。今天我们通过实例来讲解DMA的使用。
今天的内容是通过串口触发DMA传输实例,因此需要做以下工作
DMA的初始化、串口初始化、串口传输、DMA触发传输。
DMA初始化函数
void DMAtext(),void DMAinit()
串口初始化函数
void UARTinit()
串口传输函数
void UartTX_Send_String(char *Data)
以上的函数的课已从以前的博客中找到,这就是封装的好处
接下来我们重点讲讲DMA触发传输
DMA触发传输
void DMA_Send()
/*停止DMA所有通道进行传输*/
DMAARM=0x80;
/*启动DMA通道0进行传输*/
DMAARM=0x01;
/*清中断标志*/
DMAIRQ=0x00;
/*DMA通道0传送请求*/
DMAREQ=0x01;
/*等待DMA传送完成*/
while(!(DMAIRQ&0x01));
最后我贴上主函数的代码
DMAtext();
/*DMA串口*/
#define DMATRIG_UTX0 15
/*DMA配置源地址*/
unsigned char a[]="hello";
void main()
{
DMAinit();
UARTinit();
unsigned char string[]="\n DMA USART:";
while(1)
{
UartTX_Send_String(string);
DMA_Send();
}
}
是不是很简单啊!
通过上面代码,可以在串口不断的显示
DMA USART:hello
今天的博客就写到这里,下期我们讲讲ADC。谢谢大家!