- /******************** (C) COPYRIGHT 2012 WildFire Team **************************
- **********************************************************************************/
- #include "stm32f10x.h"
- #include "stm32f10x_conf.h "
- #define BufferSize 32
- __IO uint32_t CurrDataCounterBegin = 0;
- __IO uint32_t CurrDataCounterEnd = 0x01; /* This variable should not be initialized to 0 */
- void Delay(__IO u32 nCount);
- void RCC_DMA1_Config(void);
- void NVIC_Configuration(void);
- const uint32_t SRC_Const_Buffer[BufferSize]=
- {
- 0x01020304,0x05060708,0x090A0B0C,0x0D0E0F10,
- 0x11121314,0x15161718,0x191A1B1C,0x1D1E1F20,
- 0x21222324,0x25262728,0x292A2B2C,0x2D2E2F30,
- 0x31323334,0x35363738,0x393A3B3C,0x3D3E3F40,
- 0x41424344,0x45464748,0x494A4B4C,0x4D4E4F50,
- 0x51525354,0x55565758,0x595A5B5C,0x5D5E5F60,
- 0x61626364,0x65666768,0x696A6B6C,0x6D6E6F70,
- 0x71727374,0x75767778,0x797A7B7C,0x7D7E7F80
- };
- uint32_t DST_Buffer[BufferSize];
- uint16_t COUNT = 0;
-
- int main(void)
- {
- NVIC_InitTypeDef NVIC_InitStructure;
- DMA_InitTypeDef DMA_InitStructure;
-
- //RCC_DMA1_Config();
- //NVIC_Configuration();
- RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
-
-
- /* Enable DMA1 channel6 IRQ Channel */
- NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel6_IRQn;
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
- NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
- NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
- NVIC_Init(&NVIC_InitStructure);
-
- /* DMA1 channel6 configuration */
-
- DMA_DeInit(DMA1_Channel6); //DMA channel
- DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)SRC_Const_Buffer; //source bass address
- DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)DST_Buffer; //density bass address
- DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; //direction: source to density
- DMA_InitStructure.DMA_BufferSize = BufferSize; //size one time
- DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Enable; //source add plus auto
- DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //density add plus auto
- DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word; //unit of source data
- DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word; //unit of density data
- DMA_InitStructure.DMA_Mode = DMA_Mode_Normal; //one cycle mode
- DMA_InitStructure.DMA_Priority = DMA_Priority_High; //piority : high
- DMA_InitStructure.DMA_M2M = DMA_M2M_Enable; //memory to memory mode
- DMA_Init(DMA1_Channel6, &DMA_InitStructure);//
-
- /* Enable DMA1 Channel6 Transfer Complete interrupt */
- DMA_ITConfig(DMA1_Channel6, DMA_IT_TC, ENABLE); //enable interrupt of dma
-
- /* Get Current Data Counter value before transfer begins */
- CurrDataCounterBegin = DMA_GetCurrDataCounter(DMA1_Channel6);
- /* Enable DMA1 Channel6 transfer */
- DMA_Cmd(DMA1_Channel6, ENABLE); //in memory to memory mode , enable is to start transfer
- while (CurrDataCounterEnd != 0)
- {
-
- }
- while (1)
- {
-
- }
- }
- void Delay(__IO u32 nCount) //简单的延时函数
- {
- for(; nCount != 0; nCount--);
- }
- void RCC_DMA1_Config(void)
- {
- /* Enable peripheral clocks ------------------------------------------------*/
- /* Enable DMA1 clock */
- RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
- }
- void NVIC_Configuration(void)
- {
- NVIC_InitTypeDef NVIC_InitStructure;
-
- /* Enable DMA1 channel6 IRQ Channel */
- NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel6_IRQn;
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
- NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
- NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
- NVIC_Init(&NVIC_InitStructure);
- }
- /******************* (C) COPYRIGHT 2012 WildFire Team *****END OF FILE************/
- void DMA1_Channel6_IRQHandler(void)
- {
- /* Test on DMA1 Channel6 Transfer Complete interrupt */
- if(DMA_GetITStatus(DMA1_IT_TC6))
- {
- /* Get Current Data Counter value after complete transfer */
- CurrDataCounterEnd = DMA_GetCurrDataCounter(DMA1_Channel6);
- /* Clear DMA1 Channel6 Half Transfer, Transfer Complete and Global interrupt pending bits */
- DMA_ClearITPendingBit(DMA1_IT_GL6);
- }
- }
复制代码
|