定时器 PWM 驱动舵机(50Hz,占空比调节角度)
// TIM3 CH1(PB4) PWM,72MHz → PSC=719, ARR=1999 → 50Hz
TIM_HandleTypeDef htim3 = {0};
htim3.Instance = TIM3;
htim3.Init.Prescaler = 719;
htim3.Init.Period = 1999; // 20ms 周期
htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
HAL_TIM_PWM_Init(&htim3);
TIM_OC_InitTypeDef oc = {0};
oc.OCMode = TIM_OCMODE_PWM1;
oc.Pulse = 100; // 1ms → 舵机中位
oc.OCPolarity = TIM_OCPOLARITY_HIGH;
HAL_TIM_PWM_ConfigChannel(&htim3, &oc, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);
// 角度映射:0°=50(0.5ms) 90°=100(1ms) 180°=150(1.5ms)
__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, 100);