|
发表于 2015-1-12 13:02:41
|
显示全部楼层
默默的看了下我的
- /*
- * 函数名:USART1_DMA_Config
- * 描述 :串口1的DMA 的初始化配置
- * 输入 :无
- * 输出 : 无
- * 调用 :在USART1_INIT()中被调用
- */
- void USART1_DMA_Config(void)
- {
- DMA_InitTypeDef DMA_InitStructure;
- RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); //开启DMA时钟
- //配置串口1发送DMA
- DMA_DeInit(DMA1_Channel4);
- /*设置DMA源:内存地址&串口数据寄存器地址*/
- DMA_InitStructure.DMA_PeripheralBaseAddr = USART1_DR_Base;
- /*内存地址(要传输的变量的指针)*/
- DMA_InitStructure.DMA_MemoryBaseAddr = (u32)Txd1Buffer; //发送的内存地址任意,请参考发送函数
-
- /*方向:从内存到外设*/
- DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;
-
- /*传输大小DMA_BufferSize=0*/
- DMA_InitStructure.DMA_BufferSize = 0; //发送的数据个数任意,请参考发送函数
-
- /*外设地址不增*/
- DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
-
- /*内存地址自增*/
- DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
-
- /*外设数据单位*/
- DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
-
- /*内存数据单位 8bit*/
- DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
-
- /*DMA模式:一次传输,循环*/
- DMA_InitStructure.DMA_Mode = DMA_Mode_Normal ;
-
- /*优先级:中*/
- DMA_InitStructure.DMA_Priority = DMA_Priority_Medium; //DMA_Priority_VeryHigh;
-
- /*禁止内存到内存的传输 */
- DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
- DMA_Init(DMA1_Channel4, &DMA_InitStructure);
-
- /*配置DMA1的4通道*/
- DMA_ITConfig(DMA1_Channel4,DMA_IT_TC,ENABLE); //配置DMA发送完成后产生中断
- DMA_Cmd (DMA1_Channel4,DISABLE);
- //配置串口1接收DMA
- /*设置DMA源:内存地址&串口数据寄存器地址*/
- DMA_DeInit(DMA1_Channel5);
- DMA_InitStructure.DMA_PeripheralBaseAddr = USART1_DR_Base;
- /*内存地址(要传输的变量的指针)*/
- DMA_InitStructure.DMA_MemoryBaseAddr = (u32)Rcv1Buffer; //接收缓存是固定不变的
-
- /*方向:从内存到外设*/
- DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
-
- /*传输大小DMA_BufferSize=BUFFSIZE*/
- DMA_InitStructure.DMA_BufferSize = Rcv1_BUFFSIZE; //必须这样设置
-
- /*外设地址不增*/
- DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
-
- /*内存地址自增*/
- DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
-
- /*外设数据单位*/
- DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
-
- /*内存数据单位 8bit*/
- DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
-
- /*DMA模式:一次传输,循环*/
- DMA_InitStructure.DMA_Mode = DMA_Mode_Normal ;
- /*优先级:中*/
- DMA_InitStructure.DMA_Priority = DMA_Priority_Medium; // DMA_Priority_VeryHigh;
-
- /*禁止内存到内存的传输 */
- DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
-
- /*配置DMA1的5通道*/
- DMA_Init(DMA1_Channel5, &DMA_InitStructure);
- DMA_ITConfig(DMA1_Channel5,DMA_IT_TC,DISABLE); //DMA接收不产生中断
- DMA_Cmd (DMA1_Channel5,ENABLE);
- }
复制代码 |
|