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

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

[复制链接]
STMCU小助手 发布时间:2021-7-14 15:01
驱动电机运动5 Y* [. ~' h1 k3 L4 b8 A$ X/ I
软件:Keil5
$ {3 U% }9 b8 k2 i设备:步进电机(17HS4401)、驱动器、单片机(STM32F103)
, H, w/ `2 `  s# Q) k! v1 K& i. X" |7 P! `9 J

) h' b7 Z* d% g& V: _接线方式:3 L4 t' f3 |' }1 P, c

' m3 [" e4 ^" b) w4 p
: |* Q; f; w3 E$ z, I) f
电机与驱动器:黑A+,绿A-,红B+,蓝B-
, C* @; W3 S* f驱动器与单片机:MF-PC8,DR-PC9,PU-PB5,COM-3.3V# }5 e- p, u0 l1 O) L
main.c:(注解部分为此次用不上的程序)
6 W) R: ~5 u( \5 r1 Q
  1. <font face="微软雅黑" size="3">#include "led.h"
      }& M# T  x4 A
  2. #include "delay.h"
    % s2 V; _* k; ^! A( h
  3. #include "key.h": b+ c1 C% E# w6 U
  4. #include "sys.h"
    # t7 C  b( m2 M, @
  5. #include "usart.h"
    " C1 _/ H  k8 B
  6. #include "timer.h"8 N4 ~; G2 T) k; n: Y( i8 H
  7. #include "foot_definition.h"- J( x, \5 ?5 n+ j4 U
  8. ' W# Y: W, e3 [  E4 n2 _
  9. int main(void)
    2 x( e3 S; ~* Z: q: B# _4 \' k% }+ [
  10. {* ^/ x% t3 w$ U
  11.         TIM3_PWM_Init(99,99);
    # V' [1 e! z# C
  12.     PC89_Init();
    , |, }% M+ R% @
  13.         //uart1_init(115200);//PA9  PA10
    8 _8 N; Z0 ~$ h3 ?1 J7 H/ q
  14.         //uart2_init(115200);//PA2  PA3
    . g  f! I: `! x" P; S2 q
  15.         //uart3_init(115200);//PB10 PB11
      v* C9 a2 a4 V
  16.         delay_init();1 x, W( s& l4 g, F$ N. N
  17.     //KEY_Init();         ; Y  I% R! i6 f' \  i2 M; n( h
  18.         LED_Init();. I9 v) W: r- L* L9 f+ B
  19.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
    0 r3 B3 d: J) m7 @% z) g' ^
  20. + m+ ]* Y/ ^1 W
  21.         while (1)
    # x5 ~/ X! q# Q; k) P1 H6 D) j
  22.         { , s5 a2 E$ P: e: D2 B2 a7 o* G+ n
  23.             GPIO_SetBits(GPIOC,GPIO_Pin_9);
    ' y0 v, {: _- c7 o! X
  24.         GPIO_SetBits(GPIOC,GPIO_Pin_8);9 D' T6 G% O7 Y. w& J: J
  25.             TIM_Cmd(TIM3, ENABLE);                                 # `, Y9 F$ f( J. Y- P2 m
  26.             LED1=!LED1;4 T8 M  q) w4 c5 M2 |4 @4 N
  27.         }+ h" t. I: Q# ]9 c- _2 J! B
  28. }$ i* o- p9 E  ]( D/ {3 t9 m7 P
  29. </font>
复制代码
time.c:; k  k3 d6 {' W) k  \
  1. <font face="微软雅黑" size="3">#include "timer.h": D% ?3 Q0 u, m7 p# f0 k
  2. #include "led.h"
    " }# z" ?* W8 U5 q( j
  3. #include "usart.h"
    7 \7 ]/ g4 ~" y$ N' N
  4. 0 Q* w- @: {, D
  5. void TIM3_PWM_Init(u16 arr,u16 psc)
    ; T* x7 u$ F' H) t$ V
  6. {  
    3 N- }! i: _6 j+ N2 ^5 o7 |+ f4 ]. h$ H; k
  7.         GPIO_InitTypeDef GPIO_InitStructure;3 W( u& {8 }. r# I) A: [0 j% r. i  m
  8.         TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    + C1 C  N+ i5 J1 D  {
  9.         TIM_OCInitTypeDef  TIM_OCInitStructure;
    ' N* u, m/ C: S% [  Z( ~
  10.        
    7 h) A, k3 U9 ]6 y$ \

  11. 4 h6 q$ f, C5 ^9 a+ C
  12.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);: t# C, ^* g, f
  13.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB  | RCC_APB2Periph_AFIO, ENABLE);  ( ?. f: \2 R4 r0 L1 t
  14.         - D# P' T% D/ u
  15.         GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);    0 |# o& o: `/ B# Y; V0 D6 R
  16. # ^  K& `& r' x0 C1 J1 B1 G, a* a. K2 K
  17.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
    + s% R: u2 O9 n
  18.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  
    - D% O/ p: B9 s3 O$ y7 x9 `% d" I; R
  19.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    # O. N  f( ^0 R6 p$ b
  20.         GPIO_Init(GPIOB, &GPIO_InitStructure);
    - l/ ?8 c7 v1 h5 w& O% G

  21. 9 [. m# }  D% r' w
  22.         TIM_TimeBaseStructure.TIM_Period = arr; " u' t2 V- F6 J& {. I$ C
  23.         TIM_TimeBaseStructure.TIM_Prescaler =psc;
      G  ], m% M8 k: y1 `5 Q: x" _9 u- T
  24.         TIM_TimeBaseStructure.TIM_ClockDivision = 0;
    3 z* D6 q0 ]# |! A; \  ^6 k" H) {
  25.         TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;4 n0 U6 u# o' _" r9 p' G$ R+ |% c3 z# |
  26.         TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);$ g/ r& j, |' k8 D/ q$ ?
  27.         / ~* n  H; _) f7 f( i) T# u) w
  28.         TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
    3 ~6 v- a/ z* H' _3 u
  29.         TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
    8 b- z4 ^9 ?9 }2 f. w. x- v' l
  30.         TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
    8 @9 z5 X4 ?! [' ]" L
  31.         TIM_OCInitStructure.TIM_Pulse=arr;  
    ' p; c2 a2 _3 K& V" C1 |
  32.         TIM_OC2Init(TIM3, &TIM_OCInitStructure); % B0 N. N" i( ^6 p9 `$ ?7 V

  33. , f" ~6 G3 a$ c" O
  34.         TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); " D6 V. U9 u+ j# R" w
  35. : }/ J* v2 K9 n" ?8 y& c
  36.         TIM_Cmd(TIM3, DISABLE);  
    ! m- c% H8 C. R- K8 d+ R' n
  37. }</font>
复制代码
time.h:
/ d. J2 ^; a* n3 \3 Z' Z
  1. <font face="微软雅黑" size="3">#ifndef __TIMER_H
    # I* A& a% c. V9 V
  2. #define __TIMER_H$ P6 C5 l7 E7 Y) `& }+ Y
  3. #include "sys.h"
    8 K: Y: f$ e2 {1 ~5 i
  4. # w7 i) D1 v5 S! g6 ?, S
  5. void TIM3_PWM_Init(u16 arr,u16 psc);</font>
复制代码
foot_definition.c名字随意取得,用以存放调用串口的程序)
1 G6 Q1 {3 _# [# `$ o, a
  1. <font face="微软雅黑" size="3">#include "foot_definition.h"( m& E" A9 R4 _7 [& e7 k$ ?
  2. #include "stm32f10x_it.h"3 H; F" V' K% `+ W! z8 W- ^  a1 N
  3. #include "delay.h"3 K) L/ m; n1 q1 }9 ]
  4. 2 w. \/ h6 ^# E: h! H; n& J9 W$ j
  5. void PC89_Init(void) //
    " {3 P5 d* r1 |
  6. {
    % g4 j( z1 z" \+ z3 W5 W+ `2 }7 t
  7. % W7 U* p# V3 P7 ?9 c
  8. GPIO_InitTypeDef  GPIO_InitStructure;* _3 X6 i1 s% r! o1 q
  9.         1 |( I1 m% V# N' ~9 @& @( j
  10.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);         + x' |" E* Z3 p, i( ]
  11.         # N& q5 }  G" E. x
  12.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9;                               
    0 x2 n) R- A& X3 E/ y0 F5 D
  13.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;# N+ }4 g& T1 D* i% A* S8 u  U
  14.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;" {9 O8 O" r: l* K2 E
  15.         1 y4 @6 }8 ^/ R. p
  16.   GPIO_Init(GPIOC, &GPIO_InitStructure);) O  h! W. X* ]2 e
  17.         GPIO_ResetBits(GPIOC,GPIO_Pin_8);    //MF1 Z* U7 ~/ f. H9 g; E' F
  18.         GPIO_ResetBits(GPIOC,GPIO_Pin_9);      //DIR
    9 V* y% p" {( f$ L
  19. }</font>
复制代码
foot_definition.h:
( V7 E( k$ G" a) F: Q
  1. <font face="微软雅黑" size="3">#ifndef _FOOT_DEFINITION_H4 C$ _, I( ^- S' w
  2. #define _FOOT_DEFINITION_H$ N0 q+ v! \/ U6 {. {2 u' G
  3. : ]1 s: T  s) R; ]
  4. void PC89_Init(void);</font>
复制代码
可以通过修改 TIM3_PWM_Init(99,99) 括号中的两个参数来改变PWM脉冲发送的频率,以达到控制电机转速的目的。& h9 t1 K. T9 \

: D) \0 s2 A' r1 ?3 H
赞 收藏 评论0 发布时间:2021-7-14 15:01

举报

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