OpenEdv-开源电子网

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

请教一下大家和原子哥,我用pwm驱动28bjy-48步进电机,驱动板灯亮。电机只振动,不转,怎么回事?

[复制链接]

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
发表于 2020-5-13 07:27:33 | 显示全部楼层 |阅读模式
1金钱
请教一下大家和原子哥,我用pwm驱动28bjy-48步进电机,驱动板灯亮。电机只振动,不转,怎么回事?
int main(void)
{               
    u8 t;
         delay_init();
         LED_Init();

         KEY_Init();
         Key4x4_GPIO_Config();
         uart_init(115200);
        TIM1_PWM_Init();
        while (1)
        {               
Prun();
        }
}

void Prun()
{

TIM_SetCompare1(TIM1,500); //????
TIM_SetCompare2(TIM1,0);
TIM_SetCompare3(TIM1,0); //????
TIM_SetCompare4(TIM1,0);
delay_ms(10);
       
TIM_SetCompare1(TIM1,0); //????
TIM_SetCompare2(TIM1,500);
TIM_SetCompare3(TIM1,0); //????
TIM_SetCompare4(TIM1,0);
delay_ms(10);

TIM_SetCompare1(TIM1,0); //????
TIM_SetCompare2(TIM1,0);
TIM_SetCompare3(TIM1,500); //????
TIM_SetCompare4(TIM1,0);
delay_ms(10);
       
          TIM_SetCompare1(TIM1,0); //????
TIM_SetCompare2(TIM1,0);
TIM_SetCompare3(TIM1,0); //????
TIM_SetCompare4(TIM1,500);
delay_ms(10);
       

       
}

最佳答案

查看完整内容[请看2#楼]

电压够吗?或者说PWM频率没对上?脉宽太小?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2020-5-13 07:27:34 | 显示全部楼层
电压够吗?或者说PWM频率没对上?脉宽太小?
猪猪熊呢?
回复

使用道具 举报

0

主题

67

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2018-12-27
在线时间
0 小时
发表于 2020-5-13 07:27:36 | 显示全部楼层
帮楼主顶一下......
回复

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2020-5-13 07:34:58 | 显示全部楼层
  1. #include "timer.h"
  2. #include "led.h"
  3. #include "delay.h"
  4. //TIM4 PWM?????
  5. //PWM?????
  6. //arr:?????
  7. //psc:??????
  8. void TIM4_PWM_Init()
  9. {  
  10. GPIO_InitTypeDef GPIO_InitStructure;
  11. TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  12. TIM_OCInitTypeDef  TIM_OCInitStructure;
  13.   RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); //?????4??
  14.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO, ENABLE);  //??GPIO???AFIO????????
  15. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9; //
  16. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //??????
  17. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  18. GPIO_Init(GPIOB, &GPIO_InitStructure);//???GPIO
  19.    //???TIM4
  20. TIM_TimeBaseStructure.TIM_Period = 99; //???????????????????????????
  21. TIM_TimeBaseStructure.TIM_Prescaler =719; //??????TIMx???????????
  22. TIM_TimeBaseStructure.TIM_ClockDivision = 0; //??????:TDTS = Tck_tim
  23. TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM??????
  24. TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); //??TIM_TimeBaseInitStruct?????????TIMx???????
  25. //???TIM4 Channel/2/3/4 PWM??  
  26. TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //???????:TIM????????2
  27.   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //??????
  28. TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //????:TIM???????
  29. TIM_OC1Init(TIM4, &TIM_OCInitStructure);  //??T??????????TIM4 OC1
  30. TIM_OC2Init(TIM4, &TIM_OCInitStructure);  //??T??????????TIM4 OC2
  31. TIM_OC3Init(TIM4, &TIM_OCInitStructure);  //??T??????????TIM4 OC3
  32. TIM_OC4Init(TIM4, &TIM_OCInitStructure);  //??T??????????TIM4 OC4
  33.   TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);  //??TIM4?CCR1????????
  34. TIM_OC2PreloadConfig(TIM4, TIM_OCPreload_Enable);  //??TIM4?CCR2????????
  35. TIM_OC3PreloadConfig(TIM4, TIM_OCPreload_Enable);  //??TIM4?CCR3????????
  36. TIM_OC4PreloadConfig(TIM4, TIM_OCPreload_Enable);  //??TIM4?CCR4????????
  37. TIM_ARRPreloadConfig(TIM4,ENABLE);
  38. TIM_Cmd(TIM4, ENABLE);  //??TIM4
  39. }
  40. void TIM1_PWM_Init()
  41. {  
  42. GPIO_InitTypeDef GPIO_InitStructure;
  43. TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  44. TIM_OCInitTypeDef  TIM_OCInitStructure;
  45. RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); //?????1??
  46.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);  //??GPIO??
  47.    //????????????,??TIM1 PWM????
  48. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11; //TIM_CHX
  49. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //??????
  50. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  51. GPIO_Init(GPIOA, &GPIO_InitStructure);//???GPIO
  52.    //???TIM1
  53. TIM_TimeBaseStructure.TIM_Period = 99; //???????????????????????????
  54. TIM_TimeBaseStructure.TIM_Prescaler =719; //??????TIMx???????????
  55. TIM_TimeBaseStructure.TIM_ClockDivision = 0; //??????:TDTS = Tck_tim
  56. TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM??????
  57. TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); //??TIM_TimeBaseInitStruct?????????TIMx???????
  58. //???TIM4 Channel/2/3/4 PWM??  
  59. TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //???????:TIM????????1
  60.   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //??????
  61. TIM_OCInitStructure.TIM_OutputNState=TIM_OutputState_Disable;//??????????N???
  62. TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //????:TIM???????
  63. TIM_OCInitStructure.TIM_OCNPolarity=TIM_OCPolarity_High;//
  64. TIM_OCInitStructure.TIM_OCIdleState=TIM_OCIdleState_Reset;//?????????????
  65. TIM_OCInitStructure.TIM_OCNIdleState=TIM_OCIdleState_Reset;//
  66. //TIM_OCInitStructure.TIM_Pulse=10;
  67. TIM_OC1Init(TIM1, &TIM_OCInitStructure);  //??T??????????TIM1 OC1
  68. TIM_OC2Init(TIM1, &TIM_OCInitStructure);  //??T??????????TIM1 OC2
  69. TIM_OC3Init(TIM1, &TIM_OCInitStructure);  //??T??????????TIM1 OC3
  70. TIM_OC4Init(TIM1, &TIM_OCInitStructure);  //??T??????????TIM1 OC4
  71.   TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);  //??TIM1?CCR1????????
  72. TIM_OC2PreloadConfig(TIM1, TIM_OCPreload_Enable);  //??TIM1?CCR2????????
  73. TIM_OC3PreloadConfig(TIM1, TIM_OCPreload_Enable);  //??TIM1?CCR3????????
  74. TIM_OC4PreloadConfig(TIM1, TIM_OCPreload_Enable);  //??TIM1?CCR4????????
  75. TIM_ARRPreloadConfig(TIM1,ENABLE);//????????
  76. TIM_CtrlPWMOutputs(TIM1,ENABLE);//?????
  77. TIM_Cmd(TIM1, ENABLE);  //??TIM1
  78. }
  79. //TIM1??PA8 A9?????, A10 A11?????; TIM4??PB6 B7?????,B8 B9?????
  80. void Prun()
  81. {

  82. TIM_SetCompare1(TIM1,1000); //????
  83. TIM_SetCompare2(TIM1,0);
  84. TIM_SetCompare3(TIM1,0); //????
  85. TIM_SetCompare4(TIM1,0);
  86. delay_ms(10);
  87.        
  88. TIM_SetCompare1(TIM1,0); //????
  89. TIM_SetCompare2(TIM1,1000);
  90. TIM_SetCompare3(TIM1,0); //????
  91. TIM_SetCompare4(TIM1,0);
  92. delay_ms(10);

  93. TIM_SetCompare1(TIM1,0); //????
  94. TIM_SetCompare2(TIM1,0);
  95. TIM_SetCompare3(TIM1,1000); //????
  96. TIM_SetCompare4(TIM1,0);
  97. delay_ms(10);
  98.        
  99.           TIM_SetCompare1(TIM1,0); //????
  100. TIM_SetCompare2(TIM1,0);
  101. TIM_SetCompare3(TIM1,0); //????
  102. TIM_SetCompare4(TIM1,1000);
  103. delay_ms(10);
  104.        

  105.        
  106. }
复制代码
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4480
金钱
4480
注册时间
2013-4-22
在线时间
337 小时
发表于 2020-5-13 15:44:43 | 显示全部楼层
你确定能驱动的起来,你直接用的IO驱动?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-1 02:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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