STM32F407 步进电机控制

2019-07-20 21:02发布

最近在调试步进电机控制程序,利用STM32F407的timer10的第一通道,但是我写的程序,电机一直在运行,不能够停止,各路大神帮我看看,如何控制电机运行的圈数啊,谢谢各位,在线等
附代码:
void Tim10_Configuration(void)//PF6-CH1-T10 { TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure; TIM_OCInitTypeDef  TIM_OCInitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM10, ENABLE);
TIM_DeInit(TIM10);
/*TIM10时钟配置*/ TIM_TimeBaseStructure.TIM_Prescaler = 5;    // TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;    // TIM_TimeBaseStructure.TIM_Period = 0xffff; // TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseInit(TIM10,&TIM_TimeBaseStructure);
/* Channel 1 Configuration in oc mode */ TIM_OCStructInit(&TIM_OCInitStructure); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle; // TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;    // TIM_OCInitStructure.TIM_Pulse = S_50HZ;    // TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;     TIM_OC1Init(TIM10,&TIM_OCInitStructure);    //通道1 TIM_ClearFlag(TIM10, TIM_FLAG_CC1); TIM_ITConfig(TIM10, TIM_IT_CC1, DISABLE);
TIM_Cmd(TIM10,DISABLE); TIM_CtrlPWMOutputs(TIM10,ENABLE); TIM_ARRPreloadConfig(TIM10, DISABLE); }
void TIM10_CC_IRQHandler(void) {     uint16_t capture=0;   uint16_t  temp=0;  if(TIM_GetITStatus(TIM1, TIM_IT_CC1) == SET)     {         TIM_ClearITPendingBit(TIM10, TIM_IT_CC1 );   Tulun_i++;   if(Tulun_i == 10 )   {   TIM_Cmd(TIM10,DISABLE);   TIM_ITConfig(TIM10, TIM_IT_CC1, DISABLE); TIM_CtrlPWMOutputs(TIM10,DISABLE);   } } }
/*************************************************************  sudu_max 最大速频率   weiz 圈数  i 方向  **************************************************************/ void step1_runhand(void) {
if(arror==1)//正转 { GPIO_ResetBits(GPIOI, GPIO_Pin_4); } else { GPIO_SetBits(GPIOI, GPIO_Pin_4); } TIM_ITConfig(TIM10, TIM_IT_CC1, ENABLE); TIM_Cmd(TIM10,ENABLE); }



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
正点原子
1楼-- · 2019-07-21 00:19
你不输出脉冲就可以了。
关闭TIM1的脉冲输出
supertramp_kiwi
2楼-- · 2019-07-21 01:13
回复【2楼】正点原子:
---------------------------------
原子哥,我用的是TIMER1,TIMER10,TIMER11,TIMER12的第一通道控制四个步进电机,利用定时器的输出比较功能输出脉冲,电机现在可运行,但是不能够控制输出固定的脉冲数,电机一直在运行,如何控制输出固定的脉冲数?用其他的定时器做计数吗?谢谢您的解答
正点原子
3楼-- · 2019-07-21 03:58
 精彩回答 2  元偷偷看……
wo_kao_me
4楼-- · 2019-07-21 06:10
 精彩回答 2  元偷偷看……
tibusi
5楼-- · 2019-07-21 09:00
回复【5楼】wo_kao_me:
---------------------------------
什么驱动芯片?
wo_kao_me
6楼-- · 2019-07-21 12:56
回复【6楼】tibusi:
---------------------------------
THB7128

一周热门 更多>