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 | }
|