OpenEdv-开源电子网

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

想用TIM3-CH2输出方波驱动步进电机,这么设置定时器对吗?

[复制链接]

50

主题

124

帖子

0

精华

高级会员

Rank: 4

积分
528
金钱
528
注册时间
2013-6-27
在线时间
79 小时
发表于 2014-8-29 17:03:50 | 显示全部楼层 |阅读模式
5金钱


void TIM3_Pulse_Init(void)
{        
 RCC->APB1ENR|=1<<1;  //
  
 RCC->APB2ENR|=1<<2;     //
 GPIOA->CRL&=0X00FFFFFF; //PA6,7   
 GPIOA->CRL|=0XB3000000; //
 
 TIM3->ARR=65535;   //
 TIM3->SC=2;   //
 
 TIM3->DIER|=1<<2;   //
  TIM3->DIER|=1<<4;   //
 
 TIM3->CCMR1|=3<<12;   //CH2 ·­
 TIM3->CCMR1|=0<<11;  //CH2
 TIM3->CCMR2|=3<<12;   //
 TIM3->CCMR2|=0<<11;  //
 
  TIM3->CCER|=0<<5;    // 
 TIM3->CCER|=1<<4;    //
 TIM3->CCER|=0<<13;    // 
 TIM3->CCER|=1<<12;    //
 
  TIM3->CCR2=ox494;       //
 TIM3->CCR4=600;       //

 
  MY_NVIC_Init(1,3,TIM3_IRQChannel,2);//
 TIM3->CR1|=0x01;     //         
}   


void TIM3_IRQHandler(void)
{                 
 if(TIM3->SR&0X0004)//????/±???2????
 {
   u16 Capture;  
   Capture=TIM3->CCR2;

   if((M1_Subdivide_NOW_Pulse-M1_Pulse)<M1_UP_NOW_Pulse)  //????
   { 
       M1_Pulse--;
         M1_NOW_arr=M1_NOW_arr-Speed_Curve[t1];
       TIM3->CCR2=Capture+M1_NOW_arr;
       t1++;
   } 
   else if((M1_Pulse<M1_UP_NOW_Pulse)&&(M1_Pulse>0))   //????
   {
       M1_Pulse--;  //???????? ????????1
         M1_NOW_arr=M1_NOW_arr+Speed_Curve[t1];
       TIM3->CCR2=Capture+M1_NOW_arr;
       t1--;
   } 
   else if(M1_Pulse==0)
   {
    M1_Pulse=M1_Subdivide_NOW_Pulse;
    TIM3->CCR2=M1_Start_arr;
    switch(M1_Status)
    {
      case 3: M1_DIR=0;//???ú???ò 
          M1_Status=4;
          break;
      case 4: M1_DIR=1;//???ú???ò
          M1_Status=3;
          break;
    }
 //   else TIM3->CR1&=~0x01;     //?????¨?±?÷3  
   }
   else  
   {
     M1_Pulse--;
     TIM3->CCR2=Capture+M1_NOW_MAX_arr;
   }   
 }      
 TIM3->SR&=~(1<<2);//????????±ê????     
}

电机用手摸着有震动感,但是不转。是不是板子上和这个引脚接着的其他元件对它的电平有影响啊?

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

使用道具 举报

10

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1841
金钱
1841
注册时间
2014-6-27
在线时间
982 小时
发表于 2014-8-29 17:08:08 | 显示全部楼层
有PWM输出和转是两回事,先用示波器看没有PWM输出,如果有,说明驱动不了,检查驱动电路,如果没有,检查代码,先调出PWM再定夺。
回复

使用道具 举报

10

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2014-1-20
在线时间
15 小时
发表于 2014-8-30 01:28:36 | 显示全部楼层
是不是我记错了,步进电机不应该是要多路信号驱动的吗?
“你要保守你的心,胜过保守一切,因为一生的果效,都是由心发出”
("Above?all?else,guard?your?heart,for?it?is?the?wellspring?of?life"---NIV)。
哭着喊着也要进步。
回复

使用道具 举报

50

主题

124

帖子

0

精华

高级会员

Rank: 4

积分
528
金钱
528
注册时间
2013-6-27
在线时间
79 小时
 楼主| 发表于 2014-9-1 13:59:15 | 显示全部楼层
回复【2楼】TinyBoy:
---------------------------------
问题找到了,把有关TIM3-CH4的语句屏蔽掉就行了
ch2和ch4不能同时中断运行吗?它们之间不是独立的?
回复

使用道具 举报

10

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1841
金钱
1841
注册时间
2014-6-27
在线时间
982 小时
发表于 2014-9-1 14:08:38 | 显示全部楼层
回复【4楼】szn1423:
---------------------------------
 那是你的设置问题,和CH4没啥关系。
回复

使用道具 举报

50

主题

124

帖子

0

精华

高级会员

Rank: 4

积分
528
金钱
528
注册时间
2013-6-27
在线时间
79 小时
 楼主| 发表于 2014-9-1 14:30:58 | 显示全部楼层
回复【5楼】TinyBoy:
---------------------------------
去掉CH4的屏蔽,电机就转的特别特别慢。。。
回复

使用道具 举报

10

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1841
金钱
1841
注册时间
2014-6-27
在线时间
982 小时
发表于 2014-9-1 15:20:18 | 显示全部楼层
回复【6楼】szn1423:
---------------------------------
 你要配合你的硬件啊,你的硬件要用到CH4,你就用啊,反正CH2和CH4是独立的。
回复

使用道具 举报

50

主题

124

帖子

0

精华

高级会员

Rank: 4

积分
528
金钱
528
注册时间
2013-6-27
在线时间
79 小时
 楼主| 发表于 2014-9-1 15:54:12 | 显示全部楼层
回复【7楼】TinyBoy:
---------------------------------
现在的问题是,硬件上CH4输出端什么都没接,定时器初始化一旦加入CH4允许捕获比较中断,CH2端接的电机转的就不正确,去掉CH4允许中断,CH2电机就正常了
回复

使用道具 举报

10

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1841
金钱
1841
注册时间
2014-6-27
在线时间
982 小时
发表于 2014-9-1 16:19:12 | 显示全部楼层
回复【8楼】szn1423:
---------------------------------
 CH4允许捕获比较中断也是可以的,还是你设置的问题,或者硬件问题。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-2 01:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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