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

stm32控制直流电机

[复制链接]
STMCU小助手 发布时间:2023-1-17 21:00
stm32控制直流电机
9 D3 f7 ?8 k* G& A5 ?7 ?: K  G* T0 N8 u/ X5 |/ T& w
  1. #include "sys.h"
    ' [# B0 p5 p7 I; M0 p3 B6 p+ C
  2. #include "DCmotor.h"
    / r1 o5 D5 |! O* h  o, @
  3. void DCmotor_Init(void)& q. |$ \8 {$ Y; y
  4. {( ]+ W( x/ n: |* P  l. q( h( J
  5.         GPIO_InitTypeDef GPIO_InitStructure;* P% g9 N2 w' A. m. @+ S7 z0 c
  6.   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);3 m0 {0 ?) g* B. e2 _' v4 T
  7.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10| GPIO_Pin_11  ;7 \* C4 r3 l% W' z! Z# T
  8.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
    5 P* J8 O2 u1 ^, N5 C
  9.   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    " N$ N. {) D$ i2 N
  10.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    + r, S7 k) s% ]0 P$ B
  11.   GPIO_Init(GPIOA, &GPIO_InitStructure);8 A( B! t1 T& U. W
  12.   GPIO_SetBits(GPIOA,GPIO_Pin_10);& S. u+ O- F% K, z8 h; E
  13.         GPIO_ResetBits(GPIOA,GPIO_Pin_11);) @6 d) l; P# J: f3 U% W
  14.         & A3 ~( B' Z7 P9 g
  15.         ' L  N  j" J( s( m/ M. f8 P
  16.        
    ! H" H( B1 N. L2 C1 }
  17.   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);! b* Q4 A& G3 i/ ^/ b; s0 f0 s* f
  18.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8  ;% _1 T, N8 D+ r: O1 C4 g/ N% {' s/ Y
  19.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
    0 O. K1 ?; u* G- w6 w9 N7 N7 y
  20.   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;7 L. }3 {- {) s7 L
  21.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;2 L8 j4 y8 k% H% `; `( E
  22.   GPIO_Init(GPIOB, &GPIO_InitStructure);7 V) u2 _$ Q1 P
  23.   
    4 k1 t6 c1 a( l" Y9 U4 b
  24.         ! U5 |/ ^! j- x
  25. }" f( N6 @, l- O1 _" s+ p% q
  26. # g- ]* K3 u4 _7 B. K$ x4 h+ Q

  27. 7 s* o5 ?, r% w
  28. void TIM4_PWM_Init(u32 arr,u32 psc)
    5 ^! O* P  k) H5 Z+ p
  29. {                                                          & z4 n, b9 ]9 `% T! Y$ Y5 y) u
  30.         //此部分需手动修改IO口设置7 f( I, V( p( L
  31.        
    3 @9 ?- w1 H" B7 d2 a" Q
  32.         GPIO_InitTypeDef GPIO_InitStructure;
    : U  M1 C5 _3 q% }
  33.         TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;7 j9 J; v* p, v7 b. w
  34.         TIM_OCInitTypeDef  TIM_OCInitStructure;( ~3 i% p1 |! V1 l, s
  35.        
    . q! W/ c7 A) ]
  36.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);          //TIM14时钟使能    / \% O* X8 U4 T5 y8 g
  37.         RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);         //使能PORTF时钟        6 r' l8 c" v# ~# D" j
  38.        
    ' _" n: [! T* ^
  39.         GPIO_PinAFConfig(GPIOD,GPIO_PinSource12,GPIO_AF_TIM4); //GPIOF9复用为定时器14
    4 J: `1 j3 W* e0 r7 F! }2 O
  40.        
    " x4 D+ |& t  c, g$ G$ S
  41.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;           //GPIOF9
    7 E- Z  {) |: s3 I& r
  42.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;        //复用功能
    . X5 q" d, R( z& x" s2 h$ Y0 O( ^: P- F
  43.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;        //速度100MHz  q$ t5 U9 h% K( l6 j! \( d
  44.         GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;      //推挽复用输出, k  ?3 B' U8 R5 A  o) ^
  45.         GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;        //上拉; P9 m3 n5 `: M# h
  46.         GPIO_Init(GPIOD,&GPIO_InitStructure);              //初始化PF9; S( m4 U# t$ S( J4 i. {  b! [
  47.           
    / I  w- l' I( }$ P
  48.         TIM_TimeBaseStructure.TIM_Prescaler=psc;  //定时器分频; |) l. y$ [0 |, B/ o( A2 _, V2 x
  49.         TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式  E) ]+ x" h) u
  50.         TIM_TimeBaseStructure.TIM_Period=arr;   //自动重装载值
    8 T* u8 h; d- K6 Z% Q
  51.         TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; 3 H" ]8 c& P3 E/ ~% t% I7 G
  52.        
    8 D5 q: }: r, L3 C" I) V
  53.         TIM_TimeBaseInit(TIM4,&TIM_TimeBaseStructure);//初始化定时器14- g7 h+ e/ \2 O+ N3 Q+ N
  54.         0 }: [/ J: [8 r) m( o
  55.         //初始化TIM14 Channel1 PWM模式         
    - v; G3 G+ `, a& `7 E
  56.         TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //选择定时器模式:TIM脉冲宽度调制模式2
    , K# M6 G6 z0 ?9 Y5 d
  57.         TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
    $ {& f8 U) ~# g# Z
  58.         TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出极性:TIM输出比较极性低
    - o1 P6 O% u9 r5 p# p: Z) K
  59.         TIM_OC1Init(TIM4, &TIM_OCInitStructure);  //根据T指定的参数初始化外设TIM1 4OC1
    7 |( H$ u  M1 y- p) m! {  l

  60. 3 {# ~. `& n+ b* |% ?  C8 {
  61.         TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);  //使能TIM14在CCR1上的预装载寄存器
    9 S8 S9 @6 W. {
  62. 7 S4 U; u2 ?2 f: \
  63.   TIM_ARRPreloadConfig(TIM4,ENABLE);//ARPE使能
    $ C0 G  B: s/ Z: o/ Z
  64.         2 a+ B' Y9 t5 O
  65.         TIM_Cmd(TIM4, ENABLE);  //使能TIM14
    1 D' D+ l% W, ~4 u

  66. 3 }% ^9 n$ D; ^% c
  67.                                                                                   
    $ a0 b5 y! F5 z/ ?! p. x( Y9 R
  68. }  
    ( f; {. r7 |$ _% Q" r" v; T/ n2 x
复制代码
————————————————" t& {& k" \0 v2 X. |# @- V' P! m* A
版权声明:地板不会说谎) A! z& H, O/ q% u% H  J5 F
1 O& R8 u, D$ k3 {. r, V9 [! f
' q7 B3 F! V$ u- V( S  g# K
赞 收藏 评论0 发布时间:2023-1-17 21:00

举报

0个回答

所属标签

相似技术帖

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