找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2861|回复: 0
收起左侧

STM32学习之使用DMA发送USART数据

[复制链接]
ID:75926 发表于 2015-4-10 17:34 | 显示全部楼层 |阅读模式
我这里配置DMA USART传输数据

void DMA_Configuration()
{
       DMA_InitTypeDef      DMA_InitStructure;//定义设置DMA的结构体
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);//使能DMA1的时钟
DMA_InitStructure.DMA_PeripheralBaseAddr= (unsigned int)&USART1->DR;//取USART->DR的地址为传输目的地
DMA_InitStructure.DMA_MemoryBaseAddr= (u32)a;//取a数组的地址为起始地
DMA_InitStructure.DMA_DIR= DMA_DIR_PeripheralDST;//设置外设作为数据传输的目的地
DMA_InitStructure.DMA_BufferSize= 40;//设置DMA缓存
DMA_InitStructure.DMA_PeripheralInc= DMA_PeripheralInc_Disable;//设置外设地址不增
       DMA_InitStructure.DMA_MemoryInc= DMA_MemoryInc_Enable;//设置内存地址自增
DMA_InitStructure.DMA_PeripheralDataSize= DMA_PeripheralDataSize_Byte;//设置外设的传输数据宽度 这里为1个字节
DMA_InitStructure.DMA_MemoryDataSize= DMA_MemoryDataSize_Byte;    //设置内存的数据宽度为 1个字节
DMA_InitStructure.DMA_Mode= DMA_Mode_Circular;       //设置DMA为循环传输模式
DMA_InitStructure.DMA_Priority= DMA_Priority_Medium;//
DMA_InitStructure.DMA_M2M= DMA_M2M_Disable;//设置DMA通道的优先级
DMA_Init(DMA1_Channel4,&DMA_InitStructure);//设置使用DMA1的第四通道为数据传输通道
DMA_Cmd (DMA1_Channel4,ENABLE);       //使能DMA
}
USART1也要设置过;
调用      USART_DMACmd(USART1,USART_DMAReq_Tx, ENABLE); 函数即可从发送数据这是CPU是空闲的


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表