本功能是基于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);
这样就完成了我们相应的步进电机伺服控制,有不懂的可以在评论区留言。