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

stm32控制直流电机

[复制链接]
STMCU小助手 发布时间:2023-1-17 21:00
stm32控制直流电机" b. |* F" V% [, B
#include "sys.h"
. t7 _9 E% G9 v3 {5 b; H( s0 _6 _#include "DCmotor.h"
" s/ H0 v" V. A, m- U8 C! t" x# f: Wvoid DCmotor_Init(void)
6 M, ]( X7 R$ A{. ]  z3 M, F  I1 `  g
        GPIO_InitTypeDef GPIO_InitStructure;4 E. o1 I0 p2 ?0 [7 v
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);! X3 Y5 `/ p" p; N  Y
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10| GPIO_Pin_11  ;
. F6 A: s4 H* i6 _3 c' A  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
! y" e" I$ n9 T& d$ n, L7 W4 L1 A  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
2 e* H$ d! Z! x3 |: X5 a# I  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
3 G& ~* r  }/ o, M* _! S  M  GPIO_Init(GPIOA, &GPIO_InitStructure);
# ^! i8 y" i" W7 b% a- Z+ F  GPIO_SetBits(GPIOA,GPIO_Pin_10);+ p1 H  i& D; l" ~, o9 q
        GPIO_ResetBits(GPIOA,GPIO_Pin_11);1 N* W0 c" Z4 ~4 e. |6 z: O
        * y! @9 `% u& r& x; m1 z. D
          V/ n' n! b- s+ R  a
        : {, {3 z0 o5 v; m) p& f/ J( Z, J
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
9 M/ @$ @- v" @  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8  ;$ ]" h: w( x! H$ p. r) L/ \
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
" X, A6 z8 @4 P& d( ^  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;- X! o4 Q* K% u7 S) i" ~/ P
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;$ \( ~: _/ L- d- }: G) L: E2 d) \
  GPIO_Init(GPIOB, &GPIO_InitStructure);
0 ^7 m& c* `1 C  ?) S' ~7 v  
% l6 p' b2 K8 J% j) {. i       
. f* A, t- R4 D0 G0 f4 m7 a. X}
! X1 @; @6 V  L$ g! ]6 k2 k' R  P/ y) O" K( N/ H
" C. k1 o: ?+ ~/ h, i) j" `7 n" D. o

, W1 X, `7 t1 Z8 K

% X, G1 P; _! m5 }void TIM4_PWM_Init(u32 arr,u32 psc)1 f7 j: P% y1 Q" Z/ \! }0 j% r
{                                                          : \6 c2 G' K& {: j6 I( V/ `# o9 I
        //此部分需手动修改IO口设置
, }, l2 ^0 K- e' j1 M' w$ I3 V3 M       
6 k; i$ l" v/ r0 Q        GPIO_InitTypeDef GPIO_InitStructure;
9 j+ K+ j0 V/ x9 r1 z1 {! ^* F        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
3 ^# N; G9 z2 L        TIM_OCInitTypeDef  TIM_OCInitStructure;2 c' ]5 Y) O5 m) m
       
9 f3 M% |" e! T9 j5 U- B        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);          //TIM14时钟使能    ) i6 O8 |1 h4 n4 b1 I  t
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);         //使能PORTF时钟       
! X* S  o: C' C  ]- a# a       
, M/ b" I  A% o+ M2 H! \7 @$ t        GPIO_PinAFConfig(GPIOD,GPIO_PinSource12,GPIO_AF_TIM4); //GPIOF9复用为定时器14
7 X7 f$ }  [6 Z        + a  O3 H. j. v0 k( H
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;           //GPIOF93 q0 g2 {1 ^% Q
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;        //复用功能% c' B  |# C; a
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;        //速度100MHz' l* x+ E, Y9 X3 }, L
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;      //推挽复用输出
, n6 u4 `2 I" t: e$ S) ~        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;        //上拉
* E  p6 @+ g) I% g% T, V        GPIO_Init(GPIOD,&GPIO_InitStructure);              //初始化PF9
# [4 C2 X, W* j1 T9 r          
  }, c9 E/ E: b+ C4 i$ l        TIM_TimeBaseStructure.TIM_Prescaler=psc;  //定时器分频
) i! `: i* `. B6 \        TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式
6 u7 b8 e, b! @% |4 ^        TIM_TimeBaseStructure.TIM_Period=arr;   //自动重装载值. y; i3 @( `4 W7 S
        TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; / [% {, R2 x  w( \* j
       
* {- K6 g  ~5 z& i        TIM_TimeBaseInit(TIM4,&TIM_TimeBaseStructure);//初始化定时器14, T0 e  O6 J# ?- Y
       
; M# t8 c9 f) E        //初始化TIM14 Channel1 PWM模式         
$ e; N# G. ?- C2 v$ v! V2 g, t        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //选择定时器模式:TIM脉冲宽度调制模式2
+ x- f0 i5 `2 B# U( i  e. o         TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
: c& V. `% K8 C" @; U        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出极性:TIM输出比较极性低. r7 H; t7 `: R" P8 q: G
        TIM_OC1Init(TIM4, &TIM_OCInitStructure);  //根据T指定的参数初始化外设TIM1 4OC1! I7 B1 j" ~: ?# q

$ S% f: @; x9 ?

9 m$ I! h1 t  k5 g        TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);  //使能TIM14在CCR1上的预装载寄存器
6 _7 K) W2 O3 w
. u* M! Y6 E- p: r; f1 g5 a, s  TIM_ARRPreloadConfig(TIM4,ENABLE);//ARPE使能 , B5 I8 j5 y. `# u6 Q# z, U) }: X
       
' v3 f8 m$ o9 L; W) m& z/ T        TIM_Cmd(TIM4, ENABLE);  //使能TIM14. \4 e$ |! j) a# |3 l

7 [& D: a* {0 G; X5 ]3 v7 `; O                                                                                  + ^7 _4 V. ?$ t; M* A& u0 v4 R( d7 N
}  
5 Y# W0 W8 w6 ^  M5 c
& R: \9 b/ ?& Y6 q: l————————————————
/ a, g# R8 S5 Y( a  g版权声明:地板不会说谎! Q) E" S1 V( i  `

2 a: E$ s4 }( k* H
赞 收藏 评论0 发布时间:2023-1-17 21:00

举报

0个回答

所属标签

相似技术帖

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