我是靠谱客的博主 真实星月,这篇文章主要介绍【STM32步进电机】PWM调节脉冲输出个数,从而精准控制角度,完成伺服控制。,现在分享给大家,希望可以做个参考。

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

  • 首先要用触发PWM的定时器进行跟随计数,这样就能同频率去计数,从而控制脉冲个数。
复制代码
1
2
3
4
HAL_NVIC_SetPriority(GENERAL_TIM2_IRQ, 0, 0); HAL_NVIC_EnableIRQ(GENERAL_TIM2_IRQ); //开启相应的定时器中断
  • 在STM32F4xx_it.c即中断函数库中添加下面函数
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
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,等待下一次中断。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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(); } } //在中断回调函数中修改我们需要的功能
  • 最后不要忘记主函数中断函数的启动
复制代码
1
2
HAL_TIM_Base_Start_IT(&htim2);

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

最后

以上就是真实星月最近收集整理的关于【STM32步进电机】PWM调节脉冲输出个数,从而精准控制角度,完成伺服控制。的全部内容,更多相关【STM32步进电机】PWM调节脉冲输出个数内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(91)

评论列表共有 0 条评论

立即
投稿
返回
顶部