1 | TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
|
2 | TIM_OCInitTypeDef TIM_TimeOutputModeStructure;
|
3 | RCC_ClocksTypeDef RCC_ClocksStatus;
|
4 |
|
5 |
|
6 | /* Time base configuration */
|
7 | TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
|
8 | TIM_TimeBaseStructure.TIM_Period = 20000;
|
9 | TIM_TimeBaseStructure.TIM_Prescaler = ((RCC_ClocksStatus.SYSCLK_Frequency / 2) / 1000000) -1;
|
10 | TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
|
11 | TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
|
12 |
|
13 | TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
|
14 |
|
15 |
|
16 | TIM_ARRPreloadConfig(TIM2, ENABLE);
|
17 |
|
18 | {
|
19 | TIM_OCInitTypeDef TIM_OCInitStruct;
|
20 | TIM_OCStructInit (&TIM_OCInitStruct);
|
21 |
|
22 | TIM_OCInitStruct.TIM_OCIdleState = TIM_OCIdleState_Reset;
|
23 | TIM_OCInitStruct.TIM_OCNIdleState = TIM_OCIdleState_Set;
|
24 | TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM1;
|
25 | TIM_OCInitStruct.TIM_OCPolarity = TIM_OCPolarity_High;
|
26 | TIM_OCInitStruct.TIM_OutputState = TIM_OutputState_Enable;
|
27 | TIM_OCInitStruct.TIM_Pulse = 1500;
|
28 |
|
29 | TIM_OC4Init(TIM2, &TIM_OCInitStruct);
|
30 | }
|
31 |
|
32 | TIM_OC4PreloadConfig(TIM2, TIM_OCPreload_Enable);
|
33 |
|
34 | {
|
35 | TIM_BDTRInitTypeDef bdtr;
|
36 | TIM_BDTRStructInit (&bdtr);
|
37 | bdtr.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable;
|
38 | TIM_BDTRConfig (TIM2, &bdtr);
|
39 | }
|
40 |
|
41 |
|
42 | /* Time Output Mode configuration */
|
43 | TIM_OCStructInit(&TIM_TimeOutputModeStructure);
|
44 | TIM_TimeOutputModeStructure.TIM_OCMode = TIM_OCMode_PWM1;
|
45 | TIM_TimeOutputModeStructure.TIM_OutputState = TIM_OutputState_Enable;
|
46 | TIM_TimeOutputModeStructure.TIM_Pulse = 1500;
|
47 | TIM_TimeOutputModeStructure.TIM_OCPolarity = TIM_OCPolarity_High;
|
48 | TIM_OC1Init(TIM2, &TIM_TimeOutputModeStructure);
|
49 |
|
50 | TIM_SelectOCxM(TIM2, TIM_Channel_4, TIM_OCMode_PWM1);
|
51 |
|
52 | TIM_SetAutoreload(TIM2, 300);
|
53 |
|
54 | TIM2->EGR |= (1 << TIM_EGR_UG);
|
55 |
|
56 | /* TIM enable counter */
|
57 | TIM_Cmd(TIM2, ENABLE);
|