定时器 在STM32CubeMX中的配置:
一、轮询方式:
HAL_TIM_Base_Start(&htim1);
HAL_TIM_OC_Start(&htim1, TIM_CHANNEL_2);
二、中断方式:
HAL_TIM_Base_Start_IT(&htim1);
HAL_TIM_OC_Start_IT(&htim1,TIM_CHANNEL_2);
输出比较回调函数
void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim)
{
static uint8_t pwm_flag = 1;
if (htim == &htim3)
{
if (pwm_flag)
htim3.Instance->CCR1 += duty_val;
else
htim3.Instance->CCR1 += period_val - duty_val;
pwm_flag = !pwm_flag;
}
}
设置输出频率和占空比
uint16_t period_val, duty_val;
void compare_pwm_set(uint32_t freq, uint8_t duty)
{
period_val = 1000000 / freq;
duty_val = period_val * duty / 100;
htim3.Instance->CCR1 = period_val;
}
STM32输出比较模式和PWM模式 比较-CSDN博客
生成两路PWM波相位差90°的方法_pwm相位差如何实现-CSDN博客
PWM移相以及占空比可变_三角波pwm怎么计算移相角度-CSDN博客