|
我要达到的目标是利用旋转编码器,控制低速同步电机(每分钟105转),每转过12度,就停一下,现在将TIM1配置成编码器输入模式,X4,
在TIM1的益出中断里设置是否关闭电机标志:
// Tim1中断函数
void TIM1_UP_IRQHandler(void)
{
if(TIM_GetITStatus(TIM1,TIM_IT_Update)!=RESET)
{
TIM_ClearFlag(TIM1,TIM_FLAG_Update);
TIM_ClearITPendingBit(TIM1,TIM_IT_Update); //清中断标志
if(motor)
{
//GPIO_SetBits(GPIOD,GPIO_Pin_12);//|GPIO_Pin_13); //关马达控制I/O口PD12
motor=0;
}
//TIM_ClearITPendingBit(TIM1,TIM_IT_Update); //清中断标志
}
}
main.c的主循环中:
while(1)
{
GPIO_ResetBits(GPIOD,GPIO_Pin_13);//|GPIO_Pin_13); //接通马达控制I/O口PD12
motor=1;
while(motor);//等待TIM1中断里将motor设置为0
GPIO_SetBits(GPIOD,GPIO_Pin_13);//|GPIO_Pin_13); //关马达控制I/O口PD12
Delay(5000000);
Delay(5000000);
}
电机和编码器用轴联器连接后垂直放置与桌上(编码器在上端),没任何固定,发生的问题是,有时转动正常,有时电机发生抖动,不旋转了,
请有经验的师傅指教下,谢谢! |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|