标题: STM32学习之使用DMA发送USART数据 [打印本页]
作者: xiaos 时间: 2015-4-10 17:34
标题: STM32学习之使用DMA发送USART数据
我这里配置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是空闲的
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |