DMA的使用实例

本文通过实例介绍如何利用DMA进行串口数据传输。首先完成DMA和串口的初始化,然后设置串口传输,并通过DMA触发传输。代码示例展示了如何不断通过串口发送“DMAUSART:hello”。适用于学习DMA基本应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

前面介绍了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。谢谢大家!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值