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

stm32控制直流电机

[复制链接]
STMCU小助手 发布时间:2023-1-17 21:00
stm32控制直流电机' N- l6 W% s1 j$ [1 ?
0 M" D0 k! ~6 n, n1 d
  1. #include "sys.h"
    & {% t9 t; @7 v
  2. #include "DCmotor.h"
    4 f& I' P+ D& i5 L1 m  O7 Y
  3. void DCmotor_Init(void)& _- c/ C: \" v* z5 a: k) A+ B( M# J
  4. {* q( x7 T' Y+ t) e9 X
  5.         GPIO_InitTypeDef GPIO_InitStructure;
    ! O8 ^+ l  P4 e0 @/ S, D6 z
  6.   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);% o6 O% ]% l. b! i" {' Q
  7.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10| GPIO_Pin_11  ;
    1 \9 E% X6 x. V+ {) z2 R
  8.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;$ l0 W/ z# o0 j( _6 p. S  M
  9.   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;2 `) P! w4 Z+ R% }/ `2 C; M
  10.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    ; M7 P# @, v3 q
  11.   GPIO_Init(GPIOA, &GPIO_InitStructure);0 V+ E: c: i3 R+ O8 e" l0 @) r6 g
  12.   GPIO_SetBits(GPIOA,GPIO_Pin_10);
    $ a% F/ `  G0 G
  13.         GPIO_ResetBits(GPIOA,GPIO_Pin_11);
    , w4 F; z) V3 K) N7 `
  14.        
    * P6 F$ C: O1 B0 z( m! B$ d
  15.         . J5 q) i1 t" C/ X4 {( c
  16.         7 U; A: C3 i" f! R% ~+ l
  17.   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
    4 E0 M' b" {. _* f$ U+ T! h
  18.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8  ;$ }- z8 E7 ^: ^7 z
  19.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
    8 }( X7 u  b/ S" G. a
  20.   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;  R! j! U( g- \5 E5 W0 ]8 \
  21.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    : c. t3 e. D3 Z2 D  h
  22.   GPIO_Init(GPIOB, &GPIO_InitStructure);
    ( ?: X: X* [$ `; q1 P; M0 V3 H
  23.   
    8 Q0 j8 u  ~0 D" V( d
  24.        
    & r( J: o: |3 }& U1 A1 O
  25. }) d+ M. s7 ?5 N( u2 X- f/ U% a
  26. ; x% S8 A7 o* p- D0 B/ G

  27. ! }9 v  \) E  X9 t: k" ~0 _3 T) s
  28. void TIM4_PWM_Init(u32 arr,u32 psc)* z/ W, ]6 y4 ?1 y9 ^+ q- A0 G
  29. {                                                          
    7 v# m1 Y0 ^6 r0 C  n; o3 O6 ?! H
  30.         //此部分需手动修改IO口设置+ x/ q7 I" j8 h+ m4 }
  31.         ! x" F  a* ?  w/ _4 c* v8 M
  32.         GPIO_InitTypeDef GPIO_InitStructure;. C- S; G' a( \" l% o
  33.         TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    # M- s- L3 @' L6 [' \
  34.         TIM_OCInitTypeDef  TIM_OCInitStructure;4 P0 m' n( N5 k5 D) n
  35.         ) M5 k* u6 u: V0 J9 Q) M
  36.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);          //TIM14时钟使能    : D9 h+ D& r( Y5 N3 G
  37.         RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);         //使能PORTF时钟        ; q" [, n  K  X5 R- b8 S+ o
  38.        
    2 d3 p1 O+ x' ?8 E, @* Y
  39.         GPIO_PinAFConfig(GPIOD,GPIO_PinSource12,GPIO_AF_TIM4); //GPIOF9复用为定时器14
    + M, T3 A7 t+ I5 [, l
  40.           i3 U, Q0 j/ P3 d* i5 o! z
  41.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;           //GPIOF9, l8 I8 H1 q& E5 Z' F; u* H
  42.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;        //复用功能
    0 h* j. V8 N0 L2 o5 V0 ?8 _
  43.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;        //速度100MHz0 Q2 P& F$ l" `1 B  t
  44.         GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;      //推挽复用输出
    / {9 f" g0 M& C5 _9 a: B
  45.         GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;        //上拉+ C" F5 l1 K" f4 z) w4 ?% m* `
  46.         GPIO_Init(GPIOD,&GPIO_InitStructure);              //初始化PF9
      q& }) c+ V  Q0 A6 O
  47.           
    ' `, ^0 f+ {8 G" ?6 g
  48.         TIM_TimeBaseStructure.TIM_Prescaler=psc;  //定时器分频
    + P8 N; k" z) s# f# G$ E
  49.         TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式
    ) i1 ^. ?" o$ ?- w) J5 E9 C
  50.         TIM_TimeBaseStructure.TIM_Period=arr;   //自动重装载值
    ( F+ P% I( T4 v' D& w; D
  51.         TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; 4 e; G6 B& q/ @4 h, e( B
  52.        
    9 g" J2 W) m* s/ B6 ?6 Q; Y
  53.         TIM_TimeBaseInit(TIM4,&TIM_TimeBaseStructure);//初始化定时器14( Q/ O# N3 E3 l: _" b* x- Y$ E! o# i
  54.        
    ; E6 \1 X' `: z- H8 i
  55.         //初始化TIM14 Channel1 PWM模式         
    # |5 e+ D" t8 j- a6 R$ ~. t
  56.         TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //选择定时器模式:TIM脉冲宽度调制模式2
    3 e! i) q6 J- P) a) R6 d$ W0 k
  57.         TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能& a/ S* b) _5 }! E$ y. \- M6 A
  58.         TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出极性:TIM输出比较极性低
    : r* x3 ^$ z1 h
  59.         TIM_OC1Init(TIM4, &TIM_OCInitStructure);  //根据T指定的参数初始化外设TIM1 4OC1
    & \: a  d# l+ D0 ]% L& [. u
  60. % S/ F/ ^5 T" e$ e" O4 @; }& B
  61.         TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);  //使能TIM14在CCR1上的预装载寄存器8 H0 }0 K% n( B  l- h/ N8 L
  62. & K) ?. s' H% V9 q- f
  63.   TIM_ARRPreloadConfig(TIM4,ENABLE);//ARPE使能   R/ i( B# P: b4 w
  64.         6 w+ l. N+ H; r, v- K* T$ K7 ?
  65.         TIM_Cmd(TIM4, ENABLE);  //使能TIM143 w6 e  A: r. f" {, P. }

  66. / \/ A6 `/ }: g2 W' ]
  67.                                                                                   ) J- h0 I4 m! \( m# i5 q  I
  68. }  5 D9 T/ [4 f0 y% G8 |9 q
复制代码
————————————————, b1 b# w/ A0 w2 ^6 V$ i/ n, Z
版权声明:地板不会说谎) W, T/ w- D  M: p' w

- ?, {# D9 y  V( o9 y9 h' c# M5 {5 @. ]2 c
赞 收藏 评论0 发布时间:2023-1-17 21:00

举报

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