OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3326|回复: 2

DMA1 双通道USART2 和USART3接收数据

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
28
金钱
28
注册时间
2015-7-16
在线时间
1 小时
发表于 2015-7-16 15:10:42 | 显示全部楼层 |阅读模式
5金钱
项目需要用到两个串口接收两种信息
中断方式已经有SDIO占据了,所以在此不想采用中断方式扰乱SD卡的信息读写,中断处理串口接收排除
同时主函数如果单纯的处理串口函数,资源消耗太大了需要等的时间长,主函数处理串口接收排除
于是想采取DMA串口2和串口3轮流开关的方式获取串口的信息,但是调试过程中始终无法达到两个通道自由开关,采用循环方式
,如下分别为两个DMA初始化函数,中文注释拷贝在网站出现问题,还望各位大神帮我看看有什么办法解决,谢谢O(∩_∩)O~~
void USART3_DMA_Config(void)
{
        DMA_InitTypeDef DMA_InitStructure;
    
        /*????DMA?±??*/
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);    
        //NVIC_Config();                   //????DMA????

        /*?è??DMA?????®???????????÷???·*/
        DMA_InitStructure.DMA_PeripheralBaseAddr = USART3_DR;       

        /*???????·(????????±?????????)*/
        DMA_InitStructure.DMA_MemoryBaseAddr = (u32)USART3_ReceiveBuff;

        /*·??ò???????è??????*/        
        DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;    

        /*?????ó??DMA_BufferSize=SENDBUFF_SIZE*/    
        DMA_InitStructure.DMA_BufferSize = USART3_ReceiveBuff_Size;

        /*???è???·????*/        
        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_Mode = DMA_Mode_Circular;    

        /*??????????*/    
        DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;  

        /*????????????????????    */
        DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;

        /*????DMA1??3?¨??*/           
        DMA_Init(DMA1_Channel3 , &DMA_InitStructure);        
        
        /*????DMA*/
        //DMA_Cmd (DMA1_Channel3,ENABLE);                    
        //DMA_ITConfig(DMA1_Channel4,DMA_IT_TC,ENABLE);  //????DMA·????ê???ó?ú?ú????
}
void USART2_DMA_Config(void)
{
        DMA_InitTypeDef DMA_InitStructure;
    
        /*????DMA?±??*/
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);    
        //NVIC_Config();                   //????DMA????

        /*?è??DMA?????®???????????÷???·*/
        DMA_InitStructure.DMA_PeripheralBaseAddr = USART2_DR;       

        /*???????·(????????±?????????)*/
        DMA_InitStructure.DMA_MemoryBaseAddr = (u32)USART2_ReceiveBuff;

        /*·??ò???????è??????*/        
        DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;    

        /*?????ó??DMA_BufferSize=SENDBUFF_SIZE*/    
        DMA_InitStructure.DMA_BufferSize = USART2_ReceiveBuff_Size;

        /*???è???·????*/        
        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_Mode = DMA_Mode_Circular;    

        /*??????????*/    
        DMA_InitStructure.DMA_Priority = DMA_Priority_High;  

        /*????????????????????    */
        DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;

        /*????DMA1??6?¨??*/           
        DMA_Init(DMA1_Channel6 , &DMA_InitStructure);        
        
        /*????DMA*/
        DMA_Cmd (DMA1_Channel6,ENABLE);                    
        //DMA_ITConfig(DMA1_Channel4,DMA_IT_TC,ENABLE);  //????DMA·????ê???ó?ú?ú????
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-7-16 22:46:07 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
28
金钱
28
注册时间
2015-7-16
在线时间
1 小时
 楼主| 发表于 2015-7-19 19:45:42 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
感谢原子哥,原子哥给点干货吧
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 23:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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