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

stm32控制直流电机

[复制链接]
STMCU小助手 发布时间:2023-1-17 21:00
stm32控制直流电机
, ~. J3 N" j1 [$ M: ]. l8 @2 I#include "sys.h"' Y  S5 m+ r2 w3 m- ?- e  i$ F0 M
#include "DCmotor.h"6 u0 O( c7 a+ o* U2 F$ e+ b
void DCmotor_Init(void)
: B, g; v' H8 t, F8 O+ A{) H8 q$ s" u) Y  Q  ]4 k  t
        GPIO_InitTypeDef GPIO_InitStructure;
; l& E4 u: {0 E/ I  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
4 Z0 c' d& V5 J' u+ `( o  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10| GPIO_Pin_11  ;
, q* i& V! n8 P2 r* K  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;" ^, x' \$ l) G# W- Y
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;7 |. N3 T9 ^% P' Y+ W) }2 T
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;2 H5 Y5 w0 b- {+ b/ j
  GPIO_Init(GPIOA, &GPIO_InitStructure);4 A' r, n. ^( y+ e
  GPIO_SetBits(GPIOA,GPIO_Pin_10);# \0 P7 R& ~" w$ j, H
        GPIO_ResetBits(GPIOA,GPIO_Pin_11);9 D/ N) [  Z; A" j4 K' G4 W
        ) g2 V! X0 P: f( a: }
        : U! Y0 q$ |3 j) B" N3 N
        7 U/ H% {" B1 I3 o8 Q
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);* W; m3 G/ S* A1 }
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8  ;
$ d( i! d/ E) W% p  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;. z8 B9 o: M- j
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
$ d( a6 ^9 n9 S( X7 Z) Y  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;8 F/ S" v) _  H. [. b  }# i
  GPIO_Init(GPIOB, &GPIO_InitStructure);  f* x& s% ~1 s5 ?5 A
  
) R6 a" ^7 q% n6 O  g( u       
' @# H' B  q) r' j3 g3 _}
# s: Q, |0 B/ j
. z4 ~. q! M% Z& q, M+ a. e
3 u. O1 L+ R" W
& N8 i& e& Y# [4 f4 Y3 D9 Q
' P/ S( h) K! z3 V0 D! b) n
void TIM4_PWM_Init(u32 arr,u32 psc)" D% m, x6 e- q8 b
{                                                          
# d$ l! _+ n5 e8 x        //此部分需手动修改IO口设置; C0 l5 i/ x. q
        - ?/ x0 t/ D/ N& G  j( l
        GPIO_InitTypeDef GPIO_InitStructure;+ ^* E, A' T. A# A
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;! J# P3 f/ _! b
        TIM_OCInitTypeDef  TIM_OCInitStructure;
3 m$ S. Z6 m' O+ j0 P6 D) D       
  d: S2 l5 d: l        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);          //TIM14时钟使能    ! u$ t2 _! s& ]$ ^* u
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);         //使能PORTF时钟       
2 r0 `3 c- H0 [. ?( t0 [        7 y$ w3 H8 ^: H  E  e2 I8 Y1 d$ G4 r
        GPIO_PinAFConfig(GPIOD,GPIO_PinSource12,GPIO_AF_TIM4); //GPIOF9复用为定时器14& K' q$ P* e! t: K2 g/ }( i. ^
       
& ~/ h4 p, f- X# l4 \% U5 y: h        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;           //GPIOF9
5 m  V& X: i) {5 H3 ^, K, \. L        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;        //复用功能+ r+ E4 Z, p! \0 p3 h) V
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;        //速度100MHz! ~4 Y0 Y6 _! j" L  Q2 q# Z2 n
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;      //推挽复用输出: V# w/ s5 v3 @9 o
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;        //上拉
* W: n  ?& x, X! F7 S- E& v+ d/ f        GPIO_Init(GPIOD,&GPIO_InitStructure);              //初始化PF99 N4 x+ w- K. Y3 d# `; |6 G6 q! K& U
          & x, A1 H9 v, ?1 U0 i- m
        TIM_TimeBaseStructure.TIM_Prescaler=psc;  //定时器分频
1 y. a) G, n0 d9 a& r1 u% \        TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式
. ]5 |. r* {; @8 v0 p* V6 J        TIM_TimeBaseStructure.TIM_Period=arr;   //自动重装载值% U" P& I/ S" Z  ?, s: o# q
        TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;   q( c8 b# k: E: a( R& o4 v
        7 u* b. t  D# r0 @$ x& t8 ^+ f8 h
        TIM_TimeBaseInit(TIM4,&TIM_TimeBaseStructure);//初始化定时器14
& B, m+ N7 V5 f        % ?1 f6 u# l* g8 _4 |* D; \
        //初始化TIM14 Channel1 PWM模式         # {9 @# Q3 `( L( \3 ^; J( m1 r! e6 ~
        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //选择定时器模式:TIM脉冲宽度调制模式2! `6 [2 {1 U  Z; S
        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
5 n3 k* d# z) ]$ j        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出极性:TIM输出比较极性低) b+ [6 h" F# P$ t5 y( @. f
        TIM_OC1Init(TIM4, &TIM_OCInitStructure);  //根据T指定的参数初始化外设TIM1 4OC1( t6 t5 i9 g" w

  H4 [9 @6 E0 f
( [" [, V4 ~* }; ?, u: T
        TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);  //使能TIM14在CCR1上的预装载寄存器; h0 R/ g6 H" v1 i# \* N

3 L/ j% w$ u; G- D7 E; V  TIM_ARRPreloadConfig(TIM4,ENABLE);//ARPE使能
! F0 a# s5 o. d% R# V# C       
! \" e+ e. J# A- K3 O# h        TIM_Cmd(TIM4, ENABLE);  //使能TIM144 m' R5 I, D3 u7 p3 v
, Z( F. z  ?7 N% A# N  {
                                                                                  
; `  I/ _" o. T$ ?/ [( I}  ( z+ c% o7 K! p5 s& G* o

3 p0 U+ P. g: }5 d8 Q' q9 i————————————————* n# ]- ?  k3 D1 b' Y# u6 @2 x
版权声明:地板不会说谎
0 a2 J& g- n7 X8 k2 M7 }6 ~  B4 h* h* o& `0 c3 p* a: V* p" _* B
收藏 评论0 发布时间:2023-1-17 21:00

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版