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

stm32控制直流电机

[复制链接]
STMCU小助手 发布时间:2023-1-17 21:00
stm32控制直流电机  g- N* y) D( @( X, G' r

0 T. c5 f& T0 U1 ]. g0 L: T
  1. #include "sys.h"8 Q$ H# ?; s4 P1 e( c0 s8 |
  2. #include "DCmotor.h"
    7 g1 Q. l9 U- i! A" D8 E# F
  3. void DCmotor_Init(void)+ d- }9 c+ o$ U# l; M+ T
  4. {
    ; {! s; n% g  `( c  s5 k1 |/ v
  5.         GPIO_InitTypeDef GPIO_InitStructure;2 i- }, V9 n! ]7 }
  6.   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
    " x7 d2 r7 ^0 w4 W; U% K- o
  7.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10| GPIO_Pin_11  ;
    ( Y0 r# @! d6 P% n8 c
  8.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;& N9 ~2 e: {4 V' o. v
  9.   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    0 z( {5 f) {( J3 {  W# d
  10.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;: ~/ o' [3 c9 g; ]! s" p$ b
  11.   GPIO_Init(GPIOA, &GPIO_InitStructure);
    ) Y9 B7 j# d  X! A' l# w% C
  12.   GPIO_SetBits(GPIOA,GPIO_Pin_10);; O/ F' a( k* h3 _1 d
  13.         GPIO_ResetBits(GPIOA,GPIO_Pin_11);% B7 l+ Z2 D& |3 l
  14.         " u2 g  z/ M' R: d
  15.        
    2 g% \) o7 `( Y6 K  n7 A0 n- }9 I6 p
  16.         3 m5 s; v3 t3 ~! G4 w+ o4 j
  17.   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);7 I# b4 {& n( i8 x# b3 ~
  18.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8  ;
    + W2 ?, a8 ~8 Q" ?9 |; c  [
  19.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;5 s. R1 q" P% P1 D7 `! u5 D2 @
  20.   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;( b8 n# t$ k5 m6 M0 k, K2 X
  21.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;- C' G/ w% x! C4 k) s
  22.   GPIO_Init(GPIOB, &GPIO_InitStructure);/ C7 N2 Q3 K4 ~; a: @
  23.   
    8 L; i. `; g' u
  24.        
      S7 a" J) Z% e' B
  25. }, F7 [1 [( T4 E; l

  26. # t' e* I& z, f: J

  27. ! k* ]- A7 ]0 o, b& ]
  28. void TIM4_PWM_Init(u32 arr,u32 psc)
    $ ]' f, j: n& z5 }: y  A
  29. {                                                            \' }7 F" x+ C' n* t( m. `
  30.         //此部分需手动修改IO口设置
    * ^- Y+ w! P& A  R1 a' K  e
  31.         2 s. L( A! i  z- ?
  32.         GPIO_InitTypeDef GPIO_InitStructure;# o, r+ l1 c+ Q6 H7 i
  33.         TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;# l. \9 o) r% i  R$ R
  34.         TIM_OCInitTypeDef  TIM_OCInitStructure;8 D3 ~) R4 }# W
  35.        
    5 w; ^& l: D8 k+ ]" f
  36.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);          //TIM14时钟使能    4 e; }6 {6 I" u* K4 a' U
  37.         RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);         //使能PORTF时钟        $ I/ C  U5 m+ O. b  Q
  38.           r" L- G/ O5 z2 w* u8 x
  39.         GPIO_PinAFConfig(GPIOD,GPIO_PinSource12,GPIO_AF_TIM4); //GPIOF9复用为定时器14) p4 P! C) Z. o2 y7 H7 U
  40.         % ?2 w: w" O& Y6 J0 f6 ]
  41.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;           //GPIOF9
    2 p+ S6 Q5 }& H# M: S6 O
  42.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;        //复用功能
    1 o4 b2 B. z  O  r/ ]6 O
  43.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;        //速度100MHz
      L' X. a  z  h) T$ I) s2 c) r
  44.         GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;      //推挽复用输出
    : V" q  v7 d) C6 w  W! |. X
  45.         GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;        //上拉% F, n- b+ V+ I
  46.         GPIO_Init(GPIOD,&GPIO_InitStructure);              //初始化PF9
    ; R7 @; W$ G9 d- G) D* b+ ~- x
  47.           
    8 G0 u1 b) o6 O8 K
  48.         TIM_TimeBaseStructure.TIM_Prescaler=psc;  //定时器分频% q. p, Z% }/ y% O( h9 F5 W4 ~" n
  49.         TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式3 k6 j' S$ T. y' @& I
  50.         TIM_TimeBaseStructure.TIM_Period=arr;   //自动重装载值
    ' v6 A4 a8 J" n* v; u/ ]
  51.         TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; 6 J) c/ I$ d0 K* }1 U
  52.        
    # y! s- _& ~4 x! m  ^$ W
  53.         TIM_TimeBaseInit(TIM4,&TIM_TimeBaseStructure);//初始化定时器14* s7 V" b0 x: N8 q1 z% e$ w. f+ C
  54.        
    ' C4 g) S" G. P" P/ Q" T3 ~
  55.         //初始化TIM14 Channel1 PWM模式         & _$ j+ x) N8 m4 |, P4 ^7 c
  56.         TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //选择定时器模式:TIM脉冲宽度调制模式2
    0 a/ m5 [0 s8 P: z/ a
  57.         TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
    - y. L$ o/ B  {" w$ a/ A1 P. p6 v
  58.         TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出极性:TIM输出比较极性低
    " A7 u+ Q' v: k3 {
  59.         TIM_OC1Init(TIM4, &TIM_OCInitStructure);  //根据T指定的参数初始化外设TIM1 4OC1% M* w  G+ |$ e7 h0 s6 Z, @
  60. . E0 X1 L' p; t1 e2 X7 ^& y& K( n
  61.         TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);  //使能TIM14在CCR1上的预装载寄存器
    3 M2 Y  @; c; ?# Q( Q' Z; p& v! d2 j
  62. 9 e! R  S7 f3 d
  63.   TIM_ARRPreloadConfig(TIM4,ENABLE);//ARPE使能 . S/ b, ~  i# @2 A3 Z# Y: K. u% \  K
  64.         % Z2 g- \) u0 J) P: }9 ~
  65.         TIM_Cmd(TIM4, ENABLE);  //使能TIM14
    " B) w2 q' r7 v& v  `
  66. ; H5 u# t. V" d9 A
  67.                                                                                   7 b1 V6 l) B' c. y& q* I: l
  68. }  
    & K, s  r9 g2 P3 G: r- p* \9 [  T
复制代码
————————————————
1 q* Q4 G& R0 K/ ~版权声明:地板不会说谎
2 k) P& u  H+ c& D. V: X: d9 P4 H: Q: I7 d& Z+ Q, J

0 b. g5 a) d; g& z/ R
收藏 评论0 发布时间:2023-1-17 21:00

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版