1 | RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
|
2 |
|
3 | /* Time base configuration */
|
4 | TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
|
5 | TIM_TimeBaseStructure.TIM_Period = TIM1_PWM_AutoReload_Value; // Full periode
|
6 | TIM_TimeBaseStructure.TIM_Prescaler = TIM1_PWM_Prescaler; // Update all 40us
|
7 | TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
|
8 | TIM_TimeBaseStructure.TIM_RepetitionCounter = 1;
|
9 | TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
|
10 | TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
|
11 |
|
12 | {
|
13 | TIM_BDTRInitTypeDef bdtr;
|
14 | TIM_BDTRStructInit (&bdtr);
|
15 | bdtr.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable;
|
16 | TIM_BDTRConfig (TIM1, &bdtr);
|
17 | }
|
18 |
|
19 | /* Time Output Mode configuration */
|
20 | TIM_OCInitTypeDef TIM_OCInitStruct;
|
21 | TIM_OCStructInit(&TIM_TimeOutputModeStructure);
|
22 | TIM_TimeOutputModeStructure.TIM_OCMode = TIM_OCMode_PWM1;
|
23 | TIM_TimeOutputModeStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
|
24 | TIM_TimeOutputModeStructure.TIM_OutputState = TIM_OutputState_Disable;
|
25 | TIM_TimeOutputModeStructure.TIM_OutputNState = TIM_OutputState_Enable;
|
26 | TIM_TimeOutputModeStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
|
27 | TIM_TimeOutputModeStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;
|
28 | TIM_TimeOutputModeStructure.TIM_Pulse = 100;
|
29 | TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);
|
30 | TIM_OC1Init(TIM1, &TIM_TimeOutputModeStructure);
|
31 |
|
32 | TIM_ARRPreloadConfig(TIM1, ENABLE);
|
33 | TIM_SelectOCxM(TIM1, TIM_Channel_1, TIM_OCMode_PWM1);
|
34 | TIM_CCxCmd(TIM1, TIM_Channel_1, ENABLE);
|
35 | TIM_CtrlPWMOutputs(TIM1, ENABLE);
|
36 | TIM1->EGR |= (1 << TIM_EGR_UG);
|
37 |
|
38 |
|
39 | /* TIM enable counter */
|
40 | TIM_Cmd(TIM1, ENABLE);
|