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

stm32控制直流电机

[复制链接]
STMCU小助手 发布时间:2023-1-17 21:00
stm32控制直流电机
2 |4 `1 P4 _, X* r1 I8 t0 U. S! _1 Y& l
  1. #include "sys.h"
    + f+ Z* e1 h9 G. e# D8 N
  2. #include "DCmotor.h"1 K5 i; c, a0 r4 t
  3. void DCmotor_Init(void)
      {( M6 u/ @' S) ~! ?2 t
  4. {
    ; ?" N+ x# j0 I2 o' |! p3 [1 M
  5.         GPIO_InitTypeDef GPIO_InitStructure;
    9 D' _1 P+ g& N6 m+ F
  6.   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
      L7 m' h7 N' ^' W
  7.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10| GPIO_Pin_11  ;
    - J4 Q4 ^" M* {+ h! q$ V+ ]0 F1 q
  8.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
    % t9 z! t; q* s: M7 S- w  L
  9.   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    + S( e& K. U1 K: C  v
  10.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;+ Q( u' P5 n' P& [; I1 |5 i2 Q" B
  11.   GPIO_Init(GPIOA, &GPIO_InitStructure);3 x+ p" r0 l! F! x1 {3 _( |
  12.   GPIO_SetBits(GPIOA,GPIO_Pin_10);
    0 B( w6 Y* D: a( j$ Q+ e6 {
  13.         GPIO_ResetBits(GPIOA,GPIO_Pin_11);
    3 x: k& x& i. E3 G2 ]* b8 F1 ^# \
  14.           k+ v+ N" z% i& G; {- b( Z1 K
  15.         * @/ w/ ?( o5 b' i
  16.        
    + H) y9 z; I6 `
  17.   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
    3 c- R9 E4 i' T  }4 y+ \
  18.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8  ;
    " M3 p2 {/ \1 y$ P, s
  19.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
    . R) M$ R* ?5 `( k; j% ]
  20.   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;9 M4 B2 W4 q3 c* X6 v" i6 A, c1 v
  21.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;, g) x& p6 t( }! T5 K& J3 z
  22.   GPIO_Init(GPIOB, &GPIO_InitStructure);
    3 z! l# ^  ^# f: S
  23.   
    % f$ h/ s! m! I9 i; h# h
  24.        
    ; u+ k5 s& S! ^
  25. }
    * J% Y. z. b" Z* i. A. ^
  26. 0 o7 O" w- w8 F2 u( o' G4 M

  27. : ~- C1 }3 J# A2 Q+ W  G. X+ A- n
  28. void TIM4_PWM_Init(u32 arr,u32 psc)% u+ F' _& k3 Z
  29. {                                                          
    0 H( S% h- c; h# E3 U( C
  30.         //此部分需手动修改IO口设置
    5 ^4 t! l: D% k# F
  31.         " \- |/ x7 s" e& ~) I- c
  32.         GPIO_InitTypeDef GPIO_InitStructure;+ j1 X* V' z0 G4 x+ _$ M6 V
  33.         TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;6 \+ k% k- Q  p7 }  B3 ]: s
  34.         TIM_OCInitTypeDef  TIM_OCInitStructure;' N* \. _: `3 I+ ^& `/ r
  35.        
    ; E2 \! T- a3 E+ P
  36.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);          //TIM14时钟使能   
      {1 Z& c" \- E1 t" b: c
  37.         RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);         //使能PORTF时钟       
    $ ]" V( u% \' x) p7 R
  38.         % ^) l4 u4 j# u; ~! b
  39.         GPIO_PinAFConfig(GPIOD,GPIO_PinSource12,GPIO_AF_TIM4); //GPIOF9复用为定时器144 l8 t& o) }1 |( `  N1 \. b4 [
  40.        
    ) q6 Y& @* A& C: z
  41.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;           //GPIOF9
    ( o& }' y) J& K) J4 E: p, B
  42.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;        //复用功能
    - f5 r3 Y0 F+ I( g+ D; V
  43.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;        //速度100MHz
    - e6 d' ^# D: R
  44.         GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;      //推挽复用输出
    & L+ [: F6 v3 o  B* f& i
  45.         GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;        //上拉
    - ]) z) Z- K2 x# r
  46.         GPIO_Init(GPIOD,&GPIO_InitStructure);              //初始化PF9& L) v3 }+ Q/ U- I6 ?) i
  47.           
    ' t9 E8 H. N8 ~8 m" Y! q
  48.         TIM_TimeBaseStructure.TIM_Prescaler=psc;  //定时器分频4 t5 q+ m/ d' p/ C
  49.         TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式
      E3 Y* w; r! }& f0 o
  50.         TIM_TimeBaseStructure.TIM_Period=arr;   //自动重装载值
    5 o/ Q; Y( h& I2 U
  51.         TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;
    9 ?8 z# `$ |2 {9 h! \+ W
  52.        
    * I0 e+ t) G* D9 c- w/ Q7 b0 b
  53.         TIM_TimeBaseInit(TIM4,&TIM_TimeBaseStructure);//初始化定时器14+ Z& \  d1 a3 ~! A2 ]" h
  54.        
    8 D0 t  i1 F/ K
  55.         //初始化TIM14 Channel1 PWM模式         " {; S* O( Z7 g' |4 R* s( C# j
  56.         TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //选择定时器模式:TIM脉冲宽度调制模式2
    . N0 D/ u7 {& K' S' A" a4 i, {  d
  57.         TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
    6 r: Q' `2 ]3 }, J) N0 d
  58.         TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出极性:TIM输出比较极性低; Y9 M% V" D* R
  59.         TIM_OC1Init(TIM4, &TIM_OCInitStructure);  //根据T指定的参数初始化外设TIM1 4OC1
    & P( T5 F3 Q- W+ q
  60. / z: l" A, ~1 `) b, D7 L$ V
  61.         TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);  //使能TIM14在CCR1上的预装载寄存器. N3 |! W* l% L7 p; t* v0 O
  62. 7 j7 ?; x: s* f$ e' ^: X" v9 y
  63.   TIM_ARRPreloadConfig(TIM4,ENABLE);//ARPE使能 & F+ K" V' ^! x; [) e( U
  64.         ; c# Z( t, H5 n3 c% W) U
  65.         TIM_Cmd(TIM4, ENABLE);  //使能TIM14+ S$ k' `2 H: F( c. V

  66. + N+ E/ m  r* k6 }' L: h
  67.                                                                                   + t. W8 Z( L" p6 C  U
  68. }  ) H- b9 `  A  S0 m2 g" ?
复制代码
————————————————
: d: c2 Z$ q4 R5 x版权声明:地板不会说谎" g+ S! j. }- i7 w3 @8 |

1 h) c$ D& [( v. f9 O/ T
8 ~: x" t+ D& I3 z' B
收藏 评论0 发布时间:2023-1-17 21:00

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版