1 | //Timer16 DMA
|
2 | RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM16, ENABLE);
|
3 | // Timer-Config
|
4 | TIM_TimeBaseStructInit(&TIM_TimeBase_InitStructure);
|
5 | TIM_TimeBase_InitStructure.TIM_Period = 56; //100
|
6 | TIM_TimeBase_InitStructure.TIM_Prescaler = 6; //48MHz/7 = 6MHz
|
7 | TIM_TimeBase_InitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
|
8 | TIM_TimeBase_InitStructure.TIM_CounterMode = TIM_CounterMode_Up;
|
9 | TIM_TimeBaseInit(TIM16, &TIM_TimeBase_InitStructure);
|
10 |
|
11 | // Timer enable
|
12 | TIM_Cmd(TIM16, ENABLE);
|
13 |
|
14 |
|
15 | //Clock Enable (DMA1)
|
16 | RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
|
17 |
|
18 | //DMA Channel3 = U
|
19 | //DMA Kanal löschen
|
20 | DMA_DeInit(DMA1_Channel3);
|
21 |
|
22 | DMA_InitStruct.DMA_BufferSize = 400;
|
23 | DMA_InitStruct.DMA_DIR = DMA_DIR_PeripheralDST;
|
24 | DMA_InitStruct.DMA_M2M = DMA_M2M_Disable;
|
25 | DMA_InitStruct.DMA_MemoryBaseAddr = (uint32_t)&Usin[0];
|
26 | DMA_InitStruct.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
|
27 | DMA_InitStruct.DMA_MemoryInc = DMA_MemoryInc_Enable;
|
28 | DMA_InitStruct.DMA_Mode = DMA_Mode_Circular;
|
29 | DMA_InitStruct.DMA_PeripheralBaseAddr = (uint32_t)&TIM1->CCR2 ;
|
30 | DMA_InitStruct.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
|
31 | DMA_InitStruct.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
|
32 | DMA_InitStruct.DMA_Priority = DMA_Priority_Medium;
|
33 |
|
34 | //Initalisierung DMA1 Kanal3
|
35 | DMA_Init(DMA1_Channel3, &DMA_InitStruct);
|
36 |
|
37 | //Interrupt nach halber und ganzer Übertragung
|
38 | DMA_ITConfig(DMA1_Channel3, DMA_IT_HT | DMA_IT_TC,ENABLE);
|
39 |
|
40 | NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel2_3_IRQn;
|
41 | NVIC_InitStructure.NVIC_IRQChannelPriority = 0;
|
42 | NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
43 | NVIC_Init(&NVIC_InitStructure);
|
44 |
|
45 | DMA_Cmd(DMA1_Channel3,ENABLE);
|
46 | TIM_DMACmd(TIM16, TIM_DMA_Update, ENABLE);
|
47 |
|
48 |
|
49 | //DMA Channel5 = V
|
50 | //DMA Kanal löschen
|
51 | DMA_DeInit(DMA1_Channel5);
|
52 |
|
53 | DMA_InitStruct.DMA_BufferSize = 400;
|
54 | DMA_InitStruct.DMA_DIR = DMA_DIR_PeripheralDST;
|
55 | DMA_InitStruct.DMA_M2M = DMA_M2M_Disable;
|
56 | DMA_InitStruct.DMA_MemoryBaseAddr = (uint32_t)&Usin[0];
|
57 | DMA_InitStruct.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
|
58 | DMA_InitStruct.DMA_MemoryInc = DMA_MemoryInc_Enable;
|
59 | DMA_InitStruct.DMA_Mode = DMA_Mode_Circular;
|
60 | DMA_InitStruct.DMA_PeripheralBaseAddr = (uint32_t)&TIM1->CCR3 ;
|
61 | DMA_InitStruct.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
|
62 | DMA_InitStruct.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
|
63 | DMA_InitStruct.DMA_Priority = DMA_Priority_Medium;
|
64 |
|
65 | //Initalisierung DMA1 Kanal5
|
66 | DMA_Init(DMA1_Channel5, &DMA_InitStruct);
|
67 |
|
68 | DMA_Cmd(DMA1_Channel5,ENABLE);
|