OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 16983|回复: 14

STM32F407 步进电机控制

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2014-3-31
在线时间
0 小时
发表于 2014-3-31 15:07: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);
}




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-3-31 19:38:03 | 显示全部楼层
你不输出脉冲就可以了。
关闭TIM1的脉冲输出
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2014-3-31
在线时间
0 小时
 楼主| 发表于 2014-3-31 20:22:23 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,我用的是TIMER1,TIMER10,TIMER11,TIMER12的第一通道控制四个步进电机,利用定时器的输出比较功能输出脉冲,电机现在可运行,但是不能够控制输出固定的脉冲数,电机一直在运行,如何控制输出固定的脉冲数?用其他的定时器做计数吗?谢谢您的解答
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-3-31 23:56:47 | 显示全部楼层
回复【3楼】supertramp_kiwi:
---------------------------------
固定脉冲数,我只用门控模式做过,另外高级定时器有个脉冲计数寄存器,貌似可以一定范围内控制。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2014-7-16
在线时间
0 小时
发表于 2014-7-16 11:27:05 | 显示全部楼层
回复【3楼】supertramp_kiwi:
---------------------------------楼主问题解决了么?最近在研究该芯片控制四路步进电机的问题,不知道该款芯片是否会存在干扰??
回复 支持 反对

使用道具 举报

3

主题

13

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2014-7-7
在线时间
1 小时
发表于 2014-7-16 12:05:39 | 显示全部楼层
回复【5楼】wo_kao_me:
---------------------------------
什么驱动芯片?
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2014-7-16
在线时间
0 小时
发表于 2014-7-16 14:20:08 | 显示全部楼层
回复【6楼】tibusi:
---------------------------------
THB7128
回复 支持 反对

使用道具 举报

3

主题

13

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2014-7-7
在线时间
1 小时
发表于 2014-7-16 14:26:24 | 显示全部楼层
回复【7楼】wo_kao_me:
---------------------------------
这种驱动芯片,就是控制一个STEP,步数没错就好了?
回复 支持 反对

使用道具 举报

7

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2014-8-8
在线时间
9 小时
发表于 2014-8-29 10:36:27 | 显示全部楼层
回复【8楼】tibusi:
---------------------------------
我给大家建立了一个qq群--210325486,方便大家交流哈,希望我们共同交流
回复 支持 反对

使用道具 举报

4

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
97
金钱
97
注册时间
2013-12-3
在线时间
0 小时
发表于 2015-3-5 14:59:49 | 显示全部楼层
回复【9楼】pathfinder:
---------------------------------
已经申请加入了,希望共同进步
帮助别人就是帮助自己!
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2015-3-27
在线时间
0 小时
发表于 2015-3-27 18:22:28 | 显示全部楼层
1.你的NVIC没配,进不了中断,
2.中断中你有一个TIMx写错了TIM10 写成了TIM1
static void NVIC_Configuration(const struct pwm_index *index)
{
    NVIC_InitTypeDef NVIC_InitStructure;

    /* Enable the TIMx_IRQn Interrupt */
    NVIC_InitStructure.NVIC_IRQChannel = index->irq;//TIM2_IRQn;//
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);
}
回复 支持 反对

使用道具 举报

26

主题

64

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2015-7-24
在线时间
0 小时
发表于 2015-8-1 22:02:00 | 显示全部楼层
请问楼主你需要外加驱动电路的吗?
M4小白菜,求各位大牛多多指导
回复 支持 反对

使用道具 举报

2

主题

47

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
金钱
291
注册时间
2016-6-18
在线时间
40 小时
发表于 2016-8-2 11:54:44 | 显示全部楼层
请问楼主,我是刚开始学那个步进电机,我用定时器1的三个CH通道和N通道输出PWM控制三相步进电机,我想请教你如何去控制PWM来使电机驱动呢???
回复 支持 反对

使用道具 举报

2

主题

47

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
金钱
291
注册时间
2016-6-18
在线时间
40 小时
发表于 2016-8-2 11:54:57 | 显示全部楼层
请问楼主,我是刚开始学那个步进电机,我用定时器1的三个CH通道和N通道输出PWM控制三相步进电机,我想请教你如何去控制PWM来使电机驱动呢???
回复 支持 反对

使用道具 举报

1

主题

100

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
279
金钱
279
注册时间
2019-8-29
在线时间
31 小时
发表于 2019-9-2 16:15:19 | 显示全部楼层
做成功了没有,我也想看看58714397@qq.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-13 10:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表