stm32 控制步进电机和外部中断冲突

stm32 控制步进电机和外部中断冲突,第1张

首先,中断顾名思义就是要“中断”,中断当前的程序来执行中断函数中的程序,中断函数中的程序执行完了才回到刚刚被中断的地方继续。

直流电机的话打断了还可以继续转,步进电机要控制通电的线圈,可能打断了就不能再继续转了。

你可以不用中断的方式,再主函数中加入按键扫描如:转一圈扫一次,这样两者兼顾。

void pwm_ARRPreloadConfig(void)

{

PrescalerValue = (uint16_t) (SystemCoreClock /TIM2_rate) - 1; //设定的是定时器的频率,要设定pwm的频率为50hz要乘以对

//应的arr值

TIM_TimeBaseStructureTIM_Prescaler = PrescalerValue; //TIM_Prescaler 设置了用来作为TIMx时钟频率除数的预分频值

TIM_TimeBaseStructureTIM_Period = PWM_ARR; //设置了在下一个更新事件装入活动的自动重装载寄存器周期的值

TIM_TimeBaseStructureTIM_ClockDivision = 0;

TIM_TimeBaseStructureTIM_CounterMode = TIM_CounterMode_Up;//向上计数模式

TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

TIM_OCInitStructureTIM_OCMode = TIM_OCMode_PWM1;

TIM_OCInitStructureTIM_OutputState = TIM_OutputState_Enable;

TIM_OCInitStructureTIM_OCPolarity = TIM_OCPolarity_High;

TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Enable); //pwm3已经调好可以用 PB0

TIM_OC4PreloadConfig(TIM2, TIM_OCPreload_Enable); //pwm4已经调好可以用 PB1

TIM_ARRPreloadConfig(TIM2, ENABLE);

TIM_Cmd(TIM2, ENABLE);

}

简单的控制电机还是可以的,复杂点的话,就要考虑电机种类,驱动芯片类型与型号,控制精度,是否带速度反馈的测速等;程序方面,程序结构,通讯类型,是否带算法等,以及STM32的具体型号等,不同系列的性能是不一样的。

个人觉得是可行的,但同时控制10个电机,程序方面相对复杂,需要一定的时间进行仔细调试才行。

以上就是关于stm32 控制步进电机和外部中断冲突全部的内容,包括:stm32 控制步进电机和外部中断冲突、求STM32的PWM控制直流电机、用一个stm32芯片控制十个电机可以实现吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9284604.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存