1  | void Timer_DMA_INIT_EXAMPLE(void)
  | 
2  | {
 | 
3  |     GPIO_InitTypeDef GPIO_InitStructure;
  | 
4  | 
  | 
5  |     /* TIM4 clock enable */
  | 
6  |     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
  | 
7  | 
  | 
8  |     /* GPIOB clock enable */
  | 
9  |     RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
  | 
10  |     
  | 
11  |     /* TIM4 chennel2 configuration : PB.07 */
  | 
12  |     GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_7;
  | 
13  |     GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
  | 
14  |     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  | 
15  |     GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  | 
16  |     GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP ;
  | 
17  |     GPIO_Init(GPIOB, &GPIO_InitStructure);
  | 
18  |     
  | 
19  |     /* Connect TIM pin to AF2 */
  | 
20  |     GPIO_PinAFConfig(GPIOB, GPIO_PinSource7, GPIO_AF_TIM4);
  | 
21  | 
  | 
22  | 
  | 
23  |     TIM_ICInitStructure.TIM_Channel = TIM_Channel_2;
  | 
24  |     TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_BothEdge;
  | 
25  |     TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
  | 
26  |     TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
  | 
27  |     TIM_ICInitStructure.TIM_ICFilter = 0x0;
  | 
28  |     
  | 
29  |       
  | 
30  |    TIM_ICInit(TIM4, &TIM_ICInitStructure);
  | 
31  |    
  | 
32  |    TIM_UpdateRequestConfig(TIM4,TIM_UpdateSource_Regular);
  | 
33  | 
  | 
34  |     
  | 
35  |     // DMA Konfiguration
  | 
36  | 
  | 
37  |     RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA1, ENABLE);
  | 
38  |     DMA_InitTypeDef DMA_InitStruct;
  | 
39  |     DMA_StructInit(&DMA_InitStruct);
  | 
40  |     DMA_InitStruct.DMA_Channel = DMA_Channel_2;
  | 
41  |     DMA_InitStruct.DMA_PeripheralBaseAddr = (uint32_t)TIM_DMABase_CCR2;
  | 
42  |     DMA_InitStruct.DMA_Memory0BaseAddr = (uint32_t)&buffer;
  | 
43  |     DMA_InitStruct.DMA_DIR = DMA_DIR_PeripheralToMemory;
  | 
44  |     DMA_InitStruct.DMA_BufferSize = 11;
  | 
45  |     DMA_InitStruct.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
  | 
46  |     DMA_InitStruct.DMA_MemoryInc = DMA_MemoryInc_Enable;
  | 
47  |     DMA_InitStruct.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
  | 
48  |     DMA_InitStruct.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
  | 
49  |     DMA_InitStruct.DMA_Mode = DMA_Mode_Circular; // DMA_Mode_Circular wenn man dauernd senden will;
  | 
50  |     DMA_InitStruct.DMA_Priority = DMA_Priority_High;
  | 
51  |     DMA_InitStruct.DMA_FIFOMode = DMA_FIFOMode_Disable;
  | 
52  |     DMA_InitStruct.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull;
  | 
53  |     DMA_InitStruct.DMA_MemoryBurst = DMA_MemoryBurst_Single;
  | 
54  |     DMA_InitStruct.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
  | 
55  |     DMA_Init(DMA1_Stream3, &DMA_InitStruct);
  | 
56  |     DMA_Cmd(DMA1_Stream3, ENABLE);
  | 
57  |     
  | 
58  |     TIM_DMAConfig(TIM4, TIM_DMABase_CCR2, TIM_DMABurstLength_1Transfer); 
  | 
59  |      
  | 
60  |     TIM_DMACmd(TIM4, TIM_DMA_Trigger , ENABLE);
  | 
61  |        
  | 
62  |     TIM_SelectCCDMA(TIM4, ENABLE);
  | 
63  | }
  |