1 | static void MX_TIM2_Init(void)
|
2 | {
|
3 |
|
4 | TIM_ClockConfigTypeDef sClockSourceConfig;
|
5 | TIM_MasterConfigTypeDef sMasterConfig;
|
6 | TIM_OC_InitTypeDef sConfigOC;
|
7 |
|
8 | htim2.Instance = TIM2;
|
9 | htim2.Init.Prescaler = 4999;
|
10 | htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
|
11 | htim2.Init.Period = 99;
|
12 | htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
13 | htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
|
14 | if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
|
15 | {
|
16 | _Error_Handler(__FILE__, __LINE__);
|
17 | }
|
18 |
|
19 | sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
|
20 | if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
|
21 | {
|
22 | _Error_Handler(__FILE__, __LINE__);
|
23 | }
|
24 |
|
25 | if (HAL_TIM_PWM_Init(&htim2) != HAL_OK)
|
26 | {
|
27 | _Error_Handler(__FILE__, __LINE__);
|
28 | }
|
29 |
|
30 | sConfigOC.OCMode = TIM_OCMODE_PWM1;
|
31 | sConfigOC.Pulse = 3;
|
32 | sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
33 | sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
|
34 | if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)
|
35 | {
|
36 | _Error_Handler(__FILE__, __LINE__);
|
37 | }
|
38 |
|
39 | sMasterConfig.MasterOutputTrigger = TIM_TRGO_ENABLE;
|
40 | sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_ENABLE;
|
41 | if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
|
42 | {
|
43 | _Error_Handler(__FILE__, __LINE__);
|
44 | }
|
45 |
|
46 | HAL_TIM_MspPostInit(&htim2);
|
47 |
|
48 | }
|
49 |
|
50 | static void MX_TIM4_Init(void)
|
51 | {
|
52 |
|
53 | TIM_ClockConfigTypeDef sClockSourceConfig;
|
54 | TIM_SlaveConfigTypeDef sSlaveConfig;
|
55 | TIM_MasterConfigTypeDef sMasterConfig;
|
56 | TIM_OC_InitTypeDef sConfigOC;
|
57 |
|
58 | htim4.Instance = TIM4;
|
59 | htim4.Init.Prescaler = 179;
|
60 | htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
|
61 | htim4.Init.Period = 99;
|
62 | htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
63 | htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
|
64 | if (HAL_TIM_Base_Init(&htim4) != HAL_OK)
|
65 | {
|
66 | _Error_Handler(__FILE__, __LINE__);
|
67 | }
|
68 |
|
69 | sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
|
70 | if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK)
|
71 | {
|
72 | _Error_Handler(__FILE__, __LINE__);
|
73 | }
|
74 |
|
75 | if (HAL_TIM_PWM_Init(&htim4) != HAL_OK)
|
76 | {
|
77 | _Error_Handler(__FILE__, __LINE__);
|
78 | }
|
79 |
|
80 |
|
81 | sConfigOC.OCMode = TIM_OCMODE_PWM1;
|
82 | sConfigOC.Pulse = 0;
|
83 | sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
84 | sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
|
85 | if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_4) != HAL_OK)
|
86 | {
|
87 | _Error_Handler(__FILE__, __LINE__);
|
88 | }
|
89 |
|
90 |
|
91 | sSlaveConfig.SlaveMode = TIM_SLAVEMODE_GATED;
|
92 | sSlaveConfig.InputTrigger = TIM_TS_ITR1;
|
93 | if (HAL_TIM_SlaveConfigSynchronization(&htim4, &sSlaveConfig) != HAL_OK)
|
94 | {
|
95 | _Error_Handler(__FILE__, __LINE__);
|
96 | }
|
97 |
|
98 | HAL_TIM_MspPostInit(&htim4);
|
99 |
|
100 | }
|
101 |
|
102 | main:
|
103 |
|
104 | htim2.Instance->CCR3 = 50;
|
105 | htim4.Instance->CCR4 = 50;
|
106 |
|
107 | HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_4);
|
108 | HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3);
|