1 | void TIM2_Init(void)
|
2 | {
|
3 |
|
4 | TIM_SlaveConfigTypeDef sSlaveConfig;
|
5 | TIM_MasterConfigTypeDef sMasterConfig;
|
6 | TIM_OC_InitTypeDef sConfigOC;
|
7 |
|
8 | htim2.Instance = TIM2;
|
9 | htim2.Init.Prescaler = 0;
|
10 | htim2.Init.CounterMode = TIM_COUNTERMODE_CENTERALIGNED3;
|
11 | htim2.Init.Period = 500;
|
12 | htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
13 | if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
|
14 | {
|
15 | Error_Handler();
|
16 | }
|
17 |
|
18 | if (HAL_TIM_PWM_Init(&htim2) != HAL_OK)
|
19 | {
|
20 | Error_Handler();
|
21 | }
|
22 |
|
23 | sSlaveConfig.SlaveMode = TIM_SLAVEMODE_COMBINED_RESETTRIGGER;
|
24 | sSlaveConfig.InputTrigger = TIM_TS_ETRF;
|
25 | sSlaveConfig.TriggerPolarity = TIM_TRIGGERPOLARITY_INVERTED;
|
26 | sSlaveConfig.TriggerPrescaler = TIM_TRIGGERPRESCALER_DIV1;
|
27 | sSlaveConfig.TriggerFilter = 0;
|
28 | if (HAL_TIM_SlaveConfigSynchronization(&htim2, &sSlaveConfig) != HAL_OK)
|
29 | {
|
30 | Error_Handler();
|
31 | }
|
32 |
|
33 | sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
34 | sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
35 | if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
|
36 | {
|
37 | Error_Handler();
|
38 | }
|
39 |
|
40 | if (HAL_TIMEx_RemapConfig(&htim2, TIM_TIM2_ETR_COMP2) != HAL_OK)
|
41 | {
|
42 | Error_Handler();
|
43 | }
|
44 |
|
45 | sConfigOC.OCMode = TIM_OCMODE_PWM1;
|
46 | sConfigOC.Pulse = 240;
|
47 | sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
48 | sConfigOC.OCFastMode = TIM_OCFAST_ENABLE;
|
49 | if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
|
50 | {
|
51 | Error_Handler();
|
52 | }
|
53 |
|
54 | sConfigOC.Pulse = 220;
|
55 | if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)
|
56 | {
|
57 | Error_Handler();
|
58 | }
|
59 |
|
60 | sConfigOC.Pulse = 20;
|
61 | if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)
|
62 | {
|
63 | Error_Handler();
|
64 | }
|
65 |
|
66 | sConfigOC.Pulse = 10;
|
67 | if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK)
|
68 | {
|
69 | Error_Handler();
|
70 | }
|
71 |
|
72 | /**TIM2 GPIO Configuration
|
73 | PA0 ------> TIM2_ETR
|
74 | */
|
75 | GPIO_InitStruct.Pin = GPIO_PIN_0;
|
76 | GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
77 | GPIO_InitStruct.Pull = GPIO_NOPULL;
|
78 | GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
79 | GPIO_InitStruct.Alternate = GPIO_AF14_TIM2;
|
80 | HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
81 |
|
82 | /*
|
83 | PA1 ------> TIM2_CH2
|
84 | PB10 ------> TIM2_CH3
|
85 | PB11 ------> TIM2_CH4
|
86 | PA15 ------> TIM2_CH1
|
87 | */
|
88 | GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_15;
|
89 | GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
90 | GPIO_InitStruct.Pull = GPIO_NOPULL;
|
91 | GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
92 | GPIO_InitStruct.Alternate = GPIO_AF1_TIM2;
|
93 | HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
94 |
|
95 | GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_11;
|
96 | GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
97 | GPIO_InitStruct.Pull = GPIO_NOPULL;
|
98 | GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
99 | GPIO_InitStruct.Alternate = GPIO_AF1_TIM2;
|
100 | HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
101 |
|
102 | }
|