野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12703|回复: 3

配置DMA读一个数据连续的然后配置的就有问题不知道错在哪里

[复制链接]
发表于 2016-5-5 17:56:42 | 显示全部楼层 |阅读模式
  1. #include "bsp_transmission.h"
  2. #include "bsp_usart.h"
  3. #include <stdio.h>

  4. __IO uint16_t ReceiveBufffer[4] = {0};

  5. void DMA_MODE_Config(void)
  6. {

  7.        
  8.        
  9.           /*DMA&acute;&laquo;&Ecirc;&auml;&Ecirc;&yacute;&frac34;&Yacute;&Aacute;÷1&Iacute;¨dao 4 USART_RX*/


  10.                 DMA_InitTypeDef DMA_InitStructure;//&micro;&Uacute;&Ograve;&raquo;&sup2;&frac12;&para;¨&Ograve;&aring;&Ograve;&raquo;&cedil;&ouml;DMA&micro;&Auml;&frac12;á&sup1;&sup1;&Igrave;&aring;·&frac12;±&atilde;&Aring;&auml;&Ouml;&Atilde;DMA
  11.    
  12.                 RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_DMA1,ENABLE);  //&iquest;&ordf;&AElig;&ocirc;DMA2&Ecirc;±&Ouml;&Oacute;
  13.           DMA_DeInit(DMA1_Stream4);
  14.           while(DMA_GetCmdStatus(DMA1_Stream4) != DISABLE) {}
  15.                 printf("&ETH;&Auml;&Egrave;&ucirc;&Egrave;&ucirc;  1");       
  16.                 DMA_InitStructure.DMA_Channel =DMA_Channel_4;//STM32&Ecirc;&yacute;&frac34;&Yacute;&Ecirc;&Ouml;&sup2;á&iquest;&Eacute;&Ograve;&Ocirc;&Ouml;&ordf;&micro;&Agrave;DMA2&micro;&Auml;TX&Iacute;¨&micro;&Agrave;4&Ecirc;&yacute;&frac34;&Yacute;&Aacute;÷7
  17.    
  18.                 DMA_InitStructure.DMA_PeripheralBaseAddr = USART_DR_BASE;//DMA&acute;&laquo;&Ecirc;&auml;&micro;&Auml;&micro;&Oslash;&Ouml;·&Egrave;&euml;&iquest;&Uacute;
  19.                        
  20.           DMA_InitStructure.DMA_Memory0BaseAddr =  (uint32_t)ReceiveBufffer;//&frac12;&laquo;&Euml;&ucirc;&Euml;&Iacute;&Egrave;&euml;&Aacute;&Euml;&Ograve;&raquo;&cedil;&ouml;&Ecirc;&yacute;×é&iexcl;&pound;&Ecirc;&Ccedil;&sup2;&raquo;&Ecirc;&Ccedil;&Ograve;&sup2;&iquest;&Eacute;&Ograve;&Ocirc;&raquo;&raquo;&cedil;&ouml;&micro;&Oslash;·&frac12;&acute;&copy;&sup3;&ouml;&Agrave;&acute;&iexcl;&pound;&Ecirc;&micro;&Ntilde;é&iexcl;&pound;
  21.                        
  22.                 DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;//·&frac12;&Iuml;ò&acute;&Oacute;&Auml;&Uacute;&acute;&aelig;&micro;&frac12;&Iacute;&acirc;&Eacute;è
  23.                        
  24.                 DMA_InitStructure.DMA_BufferSize = 4;//&Ograve;&ordf;·&cent;&Euml;&Iacute;&micro;&Auml;&Ecirc;&yacute;&frac34;&Yacute;&Aacute;&iquest;
  25.                        
  26.                 DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //&Iacute;&acirc;&Eacute;è&micro;&Oslash;&Ouml;·&sup2;&raquo;&Ocirc;&ouml;&frac14;&Oacute;&iexcl;&pound;&Ograve;&raquo;&Ouml;±&acute;&Oacute;USART1&Ouml;&ETH;&frac12;&oslash;&ETH;&ETH;&Ecirc;&auml;&sup3;&ouml;
  27.                        
  28.                 DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable; //&Auml;&Uacute;&acute;&aelig;&micro;&Oslash;&Ouml;·×&Ocirc;&Ocirc;&ouml;&frac14;&Oacute;

  29.     DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_HalfWord;
  30.     DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;          //&Iacute;&acirc;&Eacute;è&micro;&Oslash;&Ouml;·&Auml;&Uacute;&acute;&aelig;&Ecirc;&yacute;&frac34;&Yacute;&micro;&yen;&Icirc;&raquo;&para;&frac14;&Ecirc;&Ccedil;&Ograve;&raquo;&cedil;&ouml;×&Ouml;&frac12;&Uacute;

  31.     DMA_InitStructure.DMA_Mode = DMA_Mode_Normal; //&sup2;&raquo;&para;&Iuml;&Ntilde;&shy;&raquo;·&Auml;&pound;&Ecirc;&frac12;&iexcl;&pound;

  32.     DMA_InitStructure.DMA_Priority = DMA_Priority_Medium; //&acute;&laquo;&Ecirc;&auml;&Oacute;&Aring;&Iuml;&Egrave;&frac14;&para;±&eth;&iexcl;&pound;

  33.     DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;
  34.     DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full; //&frac12;&ucirc;&Oacute;&Atilde;FIFO
  35.                
  36.                 DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single; //&acute;&aelig;&acute;&cent;&AElig;÷&Iacute;&raquo;·&cent;&acute;&laquo;&Ecirc;&auml;&Ograve;&raquo;&cedil;&ouml;&frac12;&Uacute;&Aring;&Auml;       
  37.                 DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;         //&Iacute;&acirc;&Eacute;è&Iacute;&raquo;·&cent;&acute;&laquo;&Ecirc;&auml;&Ograve;&raquo;&cedil;&ouml;&frac12;&Uacute;&Aring;&Auml;
  38.                
  39.                 DMA_Init(DMA1_Stream4, &DMA_InitStructure);
  40.                 DMA_Cmd(DMA1_Stream4, ENABLE);  
  41.                 printf("&ETH;&Auml;&Egrave;&ucirc;&Egrave;&ucirc;  2");
  42.                 while (DMA_GetCmdStatus(DMA1_Stream4) != ENABLE);//&micro;&Egrave;&acute;&yacute;&Oacute;&ETH;&ETH;§&iexcl;&pound;
  43.                 printf("&ETH;&Auml;&Egrave;&ucirc;&Egrave;&ucirc;  3");
  44. }


  45. void USART_GPIO_Config(void)
  46. {
  47.     GPIO_InitTypeDef GPIO_InitStructure;
  48.           USART_InitTypeDef USART_InitStructure;
  49.        
  50.           
  51.           RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);//pb11 rx pb10 tx
  52.        
  53.           RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);
  54.           
  55.           GPIO_PinAFConfig(GPIOC,GPIO_PinSource11,GPIO_AF_USART3);
  56.        
  57.           GPIO_InitStructure.GPIO_Pin =GPIO_Pin_11;
  58.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  59.           GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  60.           GPIO_InitStructure.GPIO_Speed = GPIO_Fast_Speed;
  61.           GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  62.           
  63.           GPIO_Init(GPIOB,&GPIO_InitStructure);
  64.          
  65.           /**
  66.             * &Iacute;¨&ETH;&Aring;&cedil;&ntilde;&Ecirc;&frac12;
  67.             * 1&cedil;&ouml;&AElig;&eth;&Ecirc;&frac14;&Icirc;&raquo;  8&cedil;&ouml;&Ecirc;&yacute;&frac34;&Yacute;&Icirc;&raquo;   1&cedil;&ouml;&Iacute;&pound;&Ouml;&sup1;&Icirc;&raquo;  &Icirc;&THORN;&ETH;&pound;&Ntilde;é&Icirc;&raquo;       
  68.            **/
  69.           USART_InitStructure.USART_BaudRate = 9600;
  70.           USART_InitStructure.USART_WordLength = USART_WordLength_8b;//&Ograve;&raquo;&cedil;&ouml;&AElig;&eth;&Ecirc;&frac14;&Icirc;&raquo;
  71.           USART_InitStructure.USART_StopBits = USART_StopBits_1;
  72.                 USART_InitStructure.USART_Parity = USART_Parity_No;
  73.                 USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;;
  74.     USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//&sup2;&raquo;&Ecirc;&sup1;&Oacute;&Atilde;&Oacute;&sup2;&frac14;&thorn;&Aacute;÷&iquest;&Oslash;&Ouml;&AElig;!!
  75.        
  76.                 USART_Init(USART3,&USART_InitStructure);
  77.                 USART_ITConfig(USART3,USART_IT_RXNE,ENABLE);
  78.           USART_Cmd(USART3,ENABLE);
  79.                   
  80. }



复制代码
  1. #ifndef _TRANSMISSION_H
  2. #define _TRANSMISSION_H

  3. #include "stm32f4xx.h"

  4. #define rBuffer 4
  5. #define tBuffer 4

  6. #define USART_DR_BASE (USART3_BASE+0x04)

  7. void USART_GPIO_Config(void);
  8. void DMA_MODE_Config(void);

  9. #endif   //_TRANSMISSION_H



复制代码
这个是DMA的配置以及.h文件
  1. /**
  2.   ******************************************************************************
  3.   * @file    main.c
  4.   * @author  WHY
  5.   * @version V1.0
  6.   * @date    2016-05-4
  7.   * @brief   &Oacute;&Atilde;1.5.1°&aelig;±&frac34;&iquest;&acirc;&frac12;¨&micro;&Auml;&sup1;¤&sup3;&Igrave;&Auml;&pound;°&aring;
  8.   ******************************************************************************
  9.   * @attention
  10.   *
  11.   *
  12.   ******************************************************************************
  13.   */
  14.   
  15. #include "stm32f4xx.h"
  16. #include "bsp_usart.h"
  17. #include "bsp_transmission.h"
  18. #include <stdio.h>

  19. void Delay(__IO uint32_t nCount);

  20. extern __IO uint16_t ReceiveBufffer[4];

  21. uint16_t rxsaveBufffer;
  22. /**
  23.   * @brief  &Ouml;÷&ordm;&macr;&Ecirc;&yacute;
  24.   * @param  &Icirc;&THORN;
  25.   * @retval &Icirc;&THORN;
  26.   */
  27. int main(void)
  28. {
  29.             // int i = 0;
  30.             Debug_USART_Config();//这个主要是测试的 就是printf这个函数PA9TX PA10RX_PWM2  PWM3 PA9TX_PWM2
  31.       NVIC_Configuration();
  32.             printf("&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;&iquest;&ordf;&Ecirc;&frac14;\n");
  33.             USART_GPIO_Config();
  34.       DMA_MODE_Config();
  35.             printf("DMA&Iacute;¨&ETH;&Aring;&sup3;&otilde;&Ecirc;&frac14;\n");
  36.                   USART_DMACmd(USART3,USART_DMAReq_Rx, ENABLE);

  37.             
  38.             

  39.             while(1)
  40.       {  

  41.                                

  42.                         }
  43. }

  44. void Delay(__IO uint32_t nCount)
  45. {
  46.         for(; nCount != 0; nCount--);
  47. }


  48. /*********************************************END OF FILE**********************/

复制代码

一直找不到错误在哪里。求大神帮忙呀


回复

使用道具 举报

 楼主| 发表于 2016-5-5 17:58:29 | 显示全部楼层
怎么都是乱码了。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-5 18:00:22 | 显示全部楼层
[code]int main(void)
{
            // int i = 0;
            Debug_USART_Config;
            NVIC_Configuration();
            USART_GPIO_Config();
             DMA_MODE_Config();
           USART_DMACmd(USART3,USART_DMAReq_Rx, ENABLE);

            
            

            while(1)
      {  

                               

                        }
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-5 18:02:58 | 显示全部楼层
  1. <p>#include "bsp_transmission.h"
  2. #include "bsp_usart.h"
  3. #include <stdio.h>

  4. __IO uint16_t ReceiveBufffer[4] = {0};

  5. void DMA_MODE_Config(void)
  6. {


  7. DMA_InitTypeDef DMA_InitStructure;
  8.    
  9. RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_DMA1,ENABLE);
  10.           DMA_DeInit(DMA1_Stream4);
  11.           while(DMA_GetCmdStatus(DMA1_Stream4) != DISABLE) {}</p><p>
  12.         DMA_InitStructure.DMA_Channel =DMA_Channel_4;
  13.    
  14.         DMA_InitStructure.DMA_PeripheralBaseAddr = USART_DR_BASE;
  15.    
  16.    DMA_InitStructure.DMA_Memory0BaseAddr =  (uint32_t)ReceiveBufffer;
  17.    
  18.         DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;
  19.    
  20.         DMA_InitStructure.DMA_BufferSize = 4;
  21.    
  22.         DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
  23.    
  24.         DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;

  25.     DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_HalfWord;
  26.     DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;

  27.     DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;

  28.     DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;

  29.     DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;
  30.     DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full;
  31.                
  32.                 DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
  33.                 DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
  34.                
  35.                 DMA_Init(DMA1_Stream4, &DMA_InitStructure);
  36.                 DMA_Cmd(DMA1_Stream4, ENABLE);
  37.         while (DMA_GetCmdStatus(DMA1_Stream4) != ENABLE);
  38. }


  39. void USART_GPIO_Config(void)
  40. {
  41.     GPIO_InitTypeDef GPIO_InitStructure;
  42.           USART_InitTypeDef USART_InitStructure;
  43.        
  44.           
  45.           RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);//pb11 rx pb10 tx
  46.        
  47.           RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);
  48.           
  49.           GPIO_PinAFConfig(GPIOC,GPIO_PinSource11,GPIO_AF_USART3);
  50.        
  51.           GPIO_InitStructure.GPIO_Pin =GPIO_Pin_11;
  52.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  53.           GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  54.           GPIO_InitStructure.GPIO_Speed = GPIO_Fast_Speed;
  55.           GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  56.           
  57.           GPIO_Init(GPIOB,&GPIO_InitStructure);
  58.          
  59.           /**
  60.             * &Iacute;¨&ETH;&Aring;&cedil;&ntilde;&Ecirc;&frac12;
  61.             * 1&cedil;&ouml;&AElig;&eth;&Ecirc;&frac14;&Icirc;&raquo;  8&cedil;&ouml;&Ecirc;&yacute;&frac34;&Yacute;&Icirc;&raquo;   1&cedil;&ouml;&Iacute;&pound;&Ouml;&sup1;&Icirc;&raquo;  &Icirc;&THORN;&ETH;&pound;&Ntilde;é&Icirc;&raquo;       
  62.            **/
  63.           USART_InitStructure.USART_BaudRate = 9600;
  64.           USART_InitStructure.USART_WordLength = USART_WordLength_8b;//&Ograve;&raquo;&cedil;&ouml;&AElig;&eth;&Ecirc;&frac14;&Icirc;&raquo;
  65.           USART_InitStructure.USART_StopBits = USART_StopBits_1;
  66.                 USART_InitStructure.USART_Parity = USART_Parity_No;
  67.                 USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;;
  68.     USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//&sup2;&raquo;&Ecirc;&sup1;&Oacute;&Atilde;&Oacute;&sup2;&frac14;&thorn;&Aacute;÷&iquest;&Oslash;&Ouml;&AElig;!!
  69.        
  70.                 USART_Init(USART3,&USART_InitStructure);
  71.                 USART_ITConfig(USART3,USART_IT_RXNE,ENABLE);
  72.           USART_Cmd(USART3,ENABLE);
  73.                   
  74. }



  75. </p>
复制代码

回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-10-3 02:26 , Processed in 0.028341 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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