// TIM2 CH1 输出,1kHz,占空比 0→100 渐变
htim2.Init.Prescaler = 71; // 72MHz/72 = 1MHz
htim2.Init.Period = 999; // 1kHz
HAL_TIM_PWM_Init(&htim2);
// ... 配置 OC1 为 PWM1,Pulse=0 ...
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);
uint16_t duty = 0, dir = 1;
while(1){
__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, duty);
HAL_Delay(5);
if(dir) { if(++duty >= 999) dir = 0; }
else { if(--duty == 0) dir = 1; }
}