STM32CUBEMX配置定时器主从模式,发送指定个数脉冲,驱动步进电机精确启停

it2023-10-19  73

STM32CUBEMX配置定时器主从模式,驱动步进电机精确启停

定时器3做主定时器输出PWM,定时器4做从定时器确定脉宽输出数量

定时器3做主定时器输出PWM,定时器4做从定时器确定脉宽输出数量

先配置一下cubemx主从关系根据这个表来配置

主定是起TIM3配置

从定时器TIM4配置

开启定时器中断

定时器中断回调函数实现

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if(htim==(&htim4)) {

if(__HAL_TIM_GET_FLAG(&htim4, TIM_FLAG_CC1) != RESET) { __HAL_TIM_CLEAR_FLAG(&htim4, TIM_FLAG_CC1); HAL_TIM_PWM_Stop_IT(&htim3, TIM_CHANNEL_1); HAL_TIM_Base_Stop_IT(&htim4); } FLAG1_OK = 1; }

}

PWM实现函数传入的是脉冲个数 void Output_Pwm (uint32_t pwmvalue) { if(FLAG1_OK == 1 ) { FLAG1_OK = 0; __HAL_TIM_SET_AUTORELOAD(&htim4,pwmvalue-1); HAL_TIM_Base_Start_IT(&htim4); HAL_TIM_PWM_Start_IT(&htim3, TIM_CHANNEL_1); } }

最后放一张实现的效果图

源代码见下一篇文章 已经经过证实可以实现控制脉冲个数输出,用的是stm32c8t6最小系统板,有什么不对的地方欢迎大家指正,一起探讨更好的解决方案。

最新回复(0)