你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32单片机驱动步进电机—简单篇

[复制链接]
STMCU小助手 发布时间:2021-7-14 15:01
驱动电机运动, L$ P0 q" I/ Y7 ]/ @
软件:Keil5
* W$ K. s$ Z0 `2 }) [设备:步进电机(17HS4401)、驱动器、单片机(STM32F103)# p( R* q) ]/ }4 H$ j# K

9 I0 M* i$ w! p8 ~% s8 Y* o

  h' q7 u3 M: X接线方式:( j7 R: Y: N9 @  Z' m) c9 _: a. d1 A
9 D0 V7 Y3 p7 a5 r# f. ~
, H  J3 M: t# f& b* ]& G& ~" P
电机与驱动器:黑A+,绿A-,红B+,蓝B-, w& @# O) ^% ^
驱动器与单片机:MF-PC8,DR-PC9,PU-PB5,COM-3.3V
5 ~; |' G# A3 v5 j, Emain.c:(注解部分为此次用不上的程序)
2 |( t. G; Z& o, l8 T1 ]
  1. <font face="微软雅黑" size="3">#include "led.h"" `: U0 U8 k4 G6 v/ I7 j5 v  i2 }
  2. #include "delay.h"
    ' \9 g2 @# E! I6 D- U! e# X. k2 w6 ^
  3. #include "key.h"/ X2 d( t2 j" Z& t1 D
  4. #include "sys.h"
    ) `: W/ [9 E; |: R/ t
  5. #include "usart.h"
    ; \7 Z: K' F5 W; A+ _8 E* O% k
  6. #include "timer.h"
      z% I8 E3 D) p* r- R, B
  7. #include "foot_definition.h", g6 O7 i7 P1 E6 @) K

  8.   k" j5 g. s6 v: S0 h( }( y7 }7 U
  9. int main(void)
    0 I( {# L0 d# t0 D/ D- l8 ]$ P
  10. {
    - O) K* \/ j; f' A
  11.         TIM3_PWM_Init(99,99);  `$ \% [) u: \" A5 N$ i
  12.     PC89_Init();& P0 d+ }, L- s$ U6 \) r2 \! D
  13.         //uart1_init(115200);//PA9  PA10
    " N) v. ?, W1 W- X1 m
  14.         //uart2_init(115200);//PA2  PA3/ t/ l/ X8 \* h  K% o' Q' M
  15.         //uart3_init(115200);//PB10 PB11
    9 B0 d  t9 e" o
  16.         delay_init();9 m' G! R; \: I' [0 r6 g
  17.     //KEY_Init();         ! K- M7 O  n! d) B6 D+ m9 h
  18.         LED_Init();
    ) ^5 s; a. \5 B4 j
  19.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);1 l% E" }  P6 u- G% Q

  20. ! I  b$ c3 _& V) g
  21.         while (1)
    1 P$ }7 A1 B! c" h+ r4 h* m
  22.         { 2 j6 K- j% I2 A! v& I+ S5 T
  23.             GPIO_SetBits(GPIOC,GPIO_Pin_9);
    8 b1 k; w  a( r! E
  24.         GPIO_SetBits(GPIOC,GPIO_Pin_8);
    : p; |) M7 J0 D$ \( ?
  25.             TIM_Cmd(TIM3, ENABLE);                                 & s. J7 `7 l9 g$ c2 n8 @
  26.             LED1=!LED1;- j/ K) E, O% ?$ Z
  27.         }
    + R  H3 H# k& x3 t
  28. }
    / g/ n# V; _' Q, x4 l5 T
  29. </font>
复制代码
time.c:/ z3 i4 q- |/ F/ U( v
  1. <font face="微软雅黑" size="3">#include "timer.h"$ d" `- z! _7 M  M
  2. #include "led.h"
    6 f; S# a; T1 [
  3. #include "usart.h"
    " q8 j8 l3 a# l" L. t( p. s
  4. + l. n& u" m& C% a
  5. void TIM3_PWM_Init(u16 arr,u16 psc)
    3 k1 u& C! l+ Z! ]
  6. {  & G6 L6 w& ^% L! O3 \
  7.         GPIO_InitTypeDef GPIO_InitStructure;
    2 A- G1 ~9 t" G5 N% [/ O, V
  8.         TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    4 d* _. I9 S' Y; y+ O$ @
  9.         TIM_OCInitTypeDef  TIM_OCInitStructure;
    1 w" g" N" ^% a9 E
  10.         ; V3 `/ Y  x6 H9 T+ a! W2 h

  11. 5 l, i* Y5 K* U# I( x
  12.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);- J/ N* }" ^% I9 R6 Q
  13.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB  | RCC_APB2Periph_AFIO, ENABLE);  ; V) o! g# [' H! |- M6 e7 z
  14.         : r7 w, [2 v% u$ x5 x5 c5 q
  15.         GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);   
    # G+ d$ s6 P! x1 c4 l, l
  16. 0 T5 R1 d. I3 X5 a+ L* D+ f
  17.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; 0 J6 }4 j; x! w5 i6 ?
  18.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  7 v! k6 Y9 t# c$ o. v( Y1 j& D
  19.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;" J) [: Z, J* ?. k
  20.         GPIO_Init(GPIOB, &GPIO_InitStructure);% A1 A: j' e+ y$ @3 ~- l
  21. - }# u5 e; Q. F' Y0 i- Z( k/ C0 Q' r
  22.         TIM_TimeBaseStructure.TIM_Period = arr; $ z( x& U; |$ n, f% r% Z) v3 F
  23.         TIM_TimeBaseStructure.TIM_Prescaler =psc; / Z; J0 y' I1 `. h% o6 Q8 [
  24.         TIM_TimeBaseStructure.TIM_ClockDivision = 0; / j/ G5 M1 n& k& `4 M, N" P
  25.         TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;0 a* H$ E) v) y# i8 K- V  F* {
  26.         TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
    3 A4 f# `( c# X. b' I
  27.         / p: q* p0 L  @
  28.         TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
    ; \* t0 I% _) h, B- k$ U5 K; ?7 R
  29.         TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;8 d% J5 {& {2 v2 q
  30.         TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; 4 t* I3 t% x) F% |9 y# a
  31.         TIM_OCInitStructure.TIM_Pulse=arr;  0 r/ P3 F3 d+ n$ Y0 l- [! k
  32.         TIM_OC2Init(TIM3, &TIM_OCInitStructure);
    ( c# T5 Z/ [! d6 @
  33. 2 L  [, R- H2 ^  i
  34.         TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);
      y6 i# `9 A1 J" j4 T% f( ?! \

  35. , r1 y, S( o7 v+ R& i* @* B
  36.         TIM_Cmd(TIM3, DISABLE);  + e; [- E1 W/ Z9 w3 u6 A7 L
  37. }</font>
复制代码
time.h:. c4 b% z+ \6 O( \
  1. <font face="微软雅黑" size="3">#ifndef __TIMER_H
    $ u# w  V' ?" s6 Q( H/ h4 Y/ G, ^' G8 T
  2. #define __TIMER_H
    " \0 W7 E4 S' g3 ?- @& v
  3. #include "sys.h"
    6 `, D! `8 }3 s4 T9 Q: e3 i! K( V

  4. 9 ]9 K2 C; K% k9 N+ F- e8 w
  5. void TIM3_PWM_Init(u16 arr,u16 psc);</font>
复制代码
foot_definition.c名字随意取得,用以存放调用串口的程序)( O+ |% g7 F8 h/ `! g" n# Y" Z4 n
  1. <font face="微软雅黑" size="3">#include "foot_definition.h"0 \) [. V( B) R$ X  c( i! E
  2. #include "stm32f10x_it.h"3 R4 o3 l! h6 d  w
  3. #include "delay.h"9 Q& s+ o, T% S7 u0 g

  4. 5 N& r2 ~; D9 [
  5. void PC89_Init(void) //( g* V: ]* l7 p! k
  6. {3 s9 Y) ], ~; {% ]9 M6 Q+ I7 m
  7. 9 V) u1 b/ L# W4 }
  8. GPIO_InitTypeDef  GPIO_InitStructure;9 h( _; p, n6 F% M
  9.        
    ) C$ Z2 A9 e% h
  10.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);         
    1 d2 h2 ^. J; y2 i" W/ G. x
  11.         ' w+ M/ F4 j8 b: v' _3 d1 [; w" |1 x
  12.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9;                               
    $ b/ b7 X4 c( c
  13.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    4 ^+ Z) N! p  y2 W4 K- ?* `
  14.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;" j5 n* q0 B' N8 R5 a. T! N
  15.         . C% j! k! J/ m( U* M; O
  16.   GPIO_Init(GPIOC, &GPIO_InitStructure);$ ~9 ~8 f5 P3 p- i
  17.         GPIO_ResetBits(GPIOC,GPIO_Pin_8);    //MF
    9 F0 z# x4 S! @0 y! d
  18.         GPIO_ResetBits(GPIOC,GPIO_Pin_9);      //DIR
    " O5 x* C# M& n, w
  19. }</font>
复制代码
foot_definition.h:7 M# r. ^  u$ c+ b: @; A
  1. <font face="微软雅黑" size="3">#ifndef _FOOT_DEFINITION_H
    2 h) k$ ^5 r3 g5 g9 N: {( B
  2. #define _FOOT_DEFINITION_H
    5 L/ |  H& Y' P( _7 J

  3. * i0 Y* ^+ _# t; }% Q3 m. w
  4. void PC89_Init(void);</font>
复制代码
可以通过修改 TIM3_PWM_Init(99,99) 括号中的两个参数来改变PWM脉冲发送的频率,以达到控制电机转速的目的。
9 C; j, D5 z/ F6 d" m3 y5 u  R% `0 f6 J* G5 t
赞 收藏 评论0 发布时间:2021-7-14 15:01

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版