你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F103 DMA 从RAM 到RAM程序

[复制链接]
mengyu139 发布时间:2014-11-9 20:48
  1. /******************** (C) COPYRIGHT 2012 WildFire Team **************************

  2. **********************************************************************************/
  3. #include "stm32f10x.h"
  4. #include "stm32f10x_conf.h "
  5. #define BufferSize  32
  6. __IO uint32_t CurrDataCounterBegin = 0;
  7. __IO uint32_t CurrDataCounterEnd = 0x01; /* This variable should not be initialized to 0 */


  8. void Delay(__IO u32 nCount);
  9. void RCC_DMA1_Config(void);
  10. void NVIC_Configuration(void);

  11. const uint32_t SRC_Const_Buffer[BufferSize]=
  12. {
  13. 0x01020304,0x05060708,0x090A0B0C,0x0D0E0F10,
  14. 0x11121314,0x15161718,0x191A1B1C,0x1D1E1F20,
  15. 0x21222324,0x25262728,0x292A2B2C,0x2D2E2F30,
  16. 0x31323334,0x35363738,0x393A3B3C,0x3D3E3F40,
  17. 0x41424344,0x45464748,0x494A4B4C,0x4D4E4F50,
  18. 0x51525354,0x55565758,0x595A5B5C,0x5D5E5F60,
  19. 0x61626364,0x65666768,0x696A6B6C,0x6D6E6F70,
  20. 0x71727374,0x75767778,0x797A7B7C,0x7D7E7F80
  21. };
  22. uint32_t DST_Buffer[BufferSize];

  23. uint16_t COUNT = 0;

  24. int main(void)
  25. {       
  26.         NVIC_InitTypeDef NVIC_InitStructure;
  27.   DMA_InitTypeDef  DMA_InitStructure;

  28.        
  29.         //RCC_DMA1_Config();
  30.   //NVIC_Configuration();
  31.         RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
  32.        
  33.        
  34.         /* Enable DMA1 channel6 IRQ Channel */
  35.         NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel6_IRQn;
  36.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  37.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  38.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  39.         NVIC_Init(&NVIC_InitStructure);
  40.        
  41.    /* DMA1 channel6 configuration */
  42.        
  43.         DMA_DeInit(DMA1_Channel6);                                                                                                                                                                                         //DMA channel
  44.         DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)SRC_Const_Buffer;        //source bass address
  45.         DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)DST_Buffer;                                                //density bass address
  46.         DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;                                                                                        //direction: source to density
  47.         DMA_InitStructure.DMA_BufferSize = BufferSize;                                                                                                        //size one time
  48.         DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Enable;                                        //source add plus auto
  49.         DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;                                                                        //density add plus auto
  50.         DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;        //unit of source data
  51.         DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;                                        //unit of density data
  52.         DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;                                                                                                                //one cycle mode
  53.         DMA_InitStructure.DMA_Priority = DMA_Priority_High;                                                                                        //piority : high
  54.         DMA_InitStructure.DMA_M2M = DMA_M2M_Enable;                                                                                                                        //memory to memory mode
  55.         DMA_Init(DMA1_Channel6, &DMA_InitStructure);//
  56.        
  57.         /* Enable DMA1 Channel6 Transfer Complete interrupt */
  58.   DMA_ITConfig(DMA1_Channel6, DMA_IT_TC, ENABLE);                                                                                                        //enable interrupt of dma
  59.        
  60.         /* Get Current Data Counter value before transfer begins */
  61.   CurrDataCounterBegin = DMA_GetCurrDataCounter(DMA1_Channel6);

  62. /* Enable DMA1 Channel6 transfer */
  63.   DMA_Cmd(DMA1_Channel6, ENABLE);      //in memory to memory mode , enable is to start transfer

  64. while (CurrDataCounterEnd != 0)
  65. {
  66.          
  67. }


  68.         while (1)
  69.         {       
  70.        
  71.         }
  72. }

  73. void Delay(__IO u32 nCount)         //简单的延时函数
  74. {
  75.         for(; nCount != 0; nCount--);
  76. }

  77. void RCC_DMA1_Config(void)
  78. {
  79.    /* Enable peripheral clocks ------------------------------------------------*/
  80.    /* Enable DMA1 clock */
  81.    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
  82. }

  83. void NVIC_Configuration(void)
  84. {
  85.    NVIC_InitTypeDef NVIC_InitStructure;
  86.    
  87.    /* Enable DMA1 channel6 IRQ Channel */
  88.    NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel6_IRQn;
  89.    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  90.    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  91.    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  92.    NVIC_Init(&NVIC_InitStructure);
  93. }






  94. /******************* (C) COPYRIGHT 2012 WildFire Team *****END OF FILE************/


  95. void DMA1_Channel6_IRQHandler(void)
  96. {
  97.    /* Test on DMA1 Channel6 Transfer Complete interrupt */
  98.    if(DMA_GetITStatus(DMA1_IT_TC6))
  99.    {
  100.      /* Get Current Data Counter value after complete transfer */
  101.      CurrDataCounterEnd = DMA_GetCurrDataCounter(DMA1_Channel6);
  102.      /* Clear DMA1 Channel6 Half Transfer, Transfer Complete and Global interrupt pending bits */
  103.      DMA_ClearITPendingBit(DMA1_IT_GL6);
  104.    }
  105. }
复制代码
捕获.JPG 捕获.JPG
收藏 1 评论2 发布时间:2014-11-9 20:48

举报

2个回答
mengyu139 回答时间:2014-11-9 20:49:10
留着以后用
沐紫 回答时间:2014-11-11 17:25:27
谢谢楼主啦

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版