【STM32步进电机】PWM调节脉冲输出个数,从而精准控制角度,完成伺服控制。

本功能是基于STM32F4库函数版本开发的,是工作时要求使用步进电机伺服控制,功能已经确保实现,希望可以帮助到大家。

  • 首先要用触发PWM的定时器进行跟随计数,这样就能同频率去计数,从而控制脉冲个数。
HAL_NVIC_SetPriority(GENERAL_TIM2_IRQ, 0, 0);
HAL_NVIC_EnableIRQ(GENERAL_TIM2_IRQ);
//开启相应的定时器中断
  • 在STM32F4xx_it.c即中断函数库中添加下面函数
void GENERAL_TIM2_INT_FUN(void)
{
  /* USER CODE BEGIN TIM6_IRQn 0 */

  /* USER CODE END TIM6_IRQn 0 */
  HAL_TIM_IRQHandler(&htim2);
  /* USER CODE BEGIN TIM6_IRQn 1 */

  /* USER CODE END TIM6_IRQn 1 */
}
//在中断的调用函数中利用
  • 中断回调函数中输入我们想要发送的脉冲个数,当发送3个脉冲后,步进电机占空比为0,等待下一次中断。
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	if(htim->Instance == TIM2)
{
	  if(test5<=3)
		{
			  test5++;
			  motor_flag=0;
		}
		else
		{	if(motor_flag==0)  
			{
				Step_Mot_Ctrl(0,1,0);
			}		
			if(motor_flag==1)
		   {
				test5=0;
			  Step_Mot_Ctrl(1,1,0);
		   }
		}
}

	if(htim->Instance == TIM5)
	{
		Sw_Timer();
		Sys_Clock();
		Do_500us_Hook();
	}
}	
//在中断回调函数中修改我们需要的功能
  • 最后不要忘记主函数中断函数的启动
HAL_TIM_Base_Start_IT(&htim2); 

这样就完成了我们相应的步进电机伺服控制,有不懂的可以在评论区留言。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值