|
|
@@ -648,10 +648,10 @@ void PLSR_PWM_Init(void) |
|
|
|
MX_TIM2_Init(); // TIM2恢复用于脉冲计数 |
|
|
|
MX_TIM6_Init(); |
|
|
|
|
|
|
|
HAL_TIM_PWM_Start(&htim10, TIM_CHANNEL_1); |
|
|
|
HAL_TIM_PWM_Start(&htim11, TIM_CHANNEL_1); |
|
|
|
HAL_TIM_PWM_Start(&htim13, TIM_CHANNEL_1); |
|
|
|
HAL_TIM_PWM_Start(&htim14, TIM_CHANNEL_1); |
|
|
|
// __HAL_TIM_SET_COMPARE(&htim10, TIM_CHANNEL_1, htim10.Init.Period); // 确保PWM停止,避免意外输出 |
|
|
|
// __HAL_TIM_SET_COMPARE(&htim11, TIM_CHANNEL_1, htim11.Init.Period); // 确保PWM停止,避免意外输出 |
|
|
|
// __HAL_TIM_SET_COMPARE(&htim13, TIM_CHANNEL_1, htim13.Init.Period); // 确保PWM停止,避免意外输出 |
|
|
|
// __HAL_TIM_SET_COMPARE(&htim14, TIM_CHANNEL_1, htim14.Init.Period); // 确保PWM停止,避免意外输出 |
|
|
|
|
|
|
|
BackupSRAM_RestoreData(); |
|
|
|
} |
|
|
@@ -1706,6 +1706,7 @@ void PLSR_Route_Init(PLSR_RouteConfig_t* route) |
|
|
|
g_last_freq = 0; // 清零上一次计算的频率 |
|
|
|
|
|
|
|
PLSR_TIM6_SetUpdateFreq(50); //初始化TIM6更新频率为1000us(1ms) |
|
|
|
PLSR_PWM_Stop(); // 确保PWM停止,避免意外输出 |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
@@ -1743,6 +1744,10 @@ void PLSR_Route_Start(PLSR_RouteConfig_t* route) |
|
|
|
// 启动定时器 |
|
|
|
PLSR_TIM6_Start(); // 启动TIM6用于频率更新和等待时间计时 |
|
|
|
HAL_TIM_Base_Start_IT(&htim2); // 启动TIM2中断用于段切换 |
|
|
|
HAL_TIM_PWM_Start(&htim10, TIM_CHANNEL_1); |
|
|
|
HAL_TIM_PWM_Start(&htim11, TIM_CHANNEL_1); |
|
|
|
HAL_TIM_PWM_Start(&htim13, TIM_CHANNEL_1); |
|
|
|
HAL_TIM_PWM_Start(&htim14, TIM_CHANNEL_1); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
@@ -2306,12 +2311,7 @@ uint32_t PLSR_Calculate_FreqByPosition(PLSR_RouteConfig_t* route, uint8_t is_acc |
|
|
|
// 更新全局变量(保存当前脉冲结束时的频率,供下次使用) |
|
|
|
g_last_freq = freq_end; |
|
|
|
|
|
|
|
// 限制频率范围 |
|
|
|
if (calculated_freq < PLSR_PWM_FREQ_MIN) |
|
|
|
{ |
|
|
|
calculated_freq = PLSR_PWM_FREQ_MIN; |
|
|
|
} |
|
|
|
else if (calculated_freq > PLSR_PWM_FREQ_MAX) |
|
|
|
if (calculated_freq > PLSR_PWM_FREQ_MAX) |
|
|
|
{ |
|
|
|
calculated_freq = PLSR_PWM_FREQ_MAX; |
|
|
|
} |
|
|
|