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

stm32控制直流电机

[复制链接]
STMCU小助手 发布时间:2023-1-17 21:00
stm32控制直流电机8 d: w0 u, ]* P
#include "sys.h". U: s2 {& m7 k, T. u" \) }# p. U6 b6 L
#include "DCmotor.h"* l3 k: V+ X4 f, |
void DCmotor_Init(void)& ?5 [" M" [, b  ?; ^2 }0 D$ j
{
( \  G! }# {- n% U2 V# r        GPIO_InitTypeDef GPIO_InitStructure;0 b7 y$ J$ `# h: h% W1 C
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
8 }% @0 f) B. Y9 @8 a  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10| GPIO_Pin_11  ;
0 {/ A! K. {; U$ c8 @( \4 E5 {( C  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
/ H) w$ \, F$ t+ q( H  g  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
: E* z- R. C$ U) c5 i8 G  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  s2 F. a5 j* Q! r2 q
  GPIO_Init(GPIOA, &GPIO_InitStructure);
7 _) q# c  y4 z9 P2 S  GPIO_SetBits(GPIOA,GPIO_Pin_10);
) @$ z2 x: |( Y; y( x        GPIO_ResetBits(GPIOA,GPIO_Pin_11);
/ O8 R" [3 ^# X       
& p! ^* s* m, G8 v4 F, ?& [        $ p5 |5 e* W. f0 O( O4 q% @, C9 A
       
( ]8 a4 ]; i! s: _  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
1 L: l$ x! v# Y2 t6 b% s: M  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8  ;* q* d; Y: z, V/ g& G$ X' X3 }/ @  i7 R$ N
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
1 J5 C4 F# G0 t  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;1 b: Q9 w+ {# H: d( \8 m* L
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;; B* P4 h8 y, w$ k0 q7 G5 w5 y
  GPIO_Init(GPIOB, &GPIO_InitStructure);
8 k7 g' g& e( n  
0 S$ o& j9 ?& J+ D' f: O       
" D5 ^# _# l# u) o6 O}0 c$ z- S' d; q8 u
! G) w  r$ k; K
2 \+ {- f: N3 [
' ^: K% [2 t4 X- D$ |
$ B, [7 T8 j( g; m8 h3 W% i
void TIM4_PWM_Init(u32 arr,u32 psc)8 w4 y7 X8 N; R* J2 M
{                                                          
8 z* s! s& s7 L4 O        //此部分需手动修改IO口设置
% `9 _+ L! }0 D" R       
' M' H" x$ V$ R% I# u        GPIO_InitTypeDef GPIO_InitStructure;
/ T8 |5 e6 F7 H4 a2 v1 E) c        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
3 o! H: a- w, N+ |        TIM_OCInitTypeDef  TIM_OCInitStructure;2 }8 m5 V# R6 U; x
        ' m2 n0 g* S- _/ s5 O) p8 a
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);          //TIM14时钟使能   
9 O. Z$ [) {% r8 @; q8 `/ X! m        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);         //使能PORTF时钟        5 Q+ t; h$ O* h; U* q
       
1 {9 U4 n- s7 Q8 X: d6 f; s/ X# R        GPIO_PinAFConfig(GPIOD,GPIO_PinSource12,GPIO_AF_TIM4); //GPIOF9复用为定时器14
0 [' \# p! A3 k        $ T& e1 M, Q7 {8 ^& A- J) E
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;           //GPIOF9
+ c( `4 S2 ^4 G! _! c        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;        //复用功能5 Z' Z8 ?8 w, z; s7 @0 S
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;        //速度100MHz
2 Y8 z/ r  t+ I" F% i        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;      //推挽复用输出" o& g: u! j8 q* w
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;        //上拉: {/ W/ Z7 {1 v% ]9 Q; `
        GPIO_Init(GPIOD,&GPIO_InitStructure);              //初始化PF99 \# Z' b1 n$ H' u% F9 n' Y
          
, ^. s/ W, b6 g        TIM_TimeBaseStructure.TIM_Prescaler=psc;  //定时器分频& q( q2 k1 x& u4 y; _$ T
        TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式: ~6 Z# Z4 ^5 h3 W# K, p5 F
        TIM_TimeBaseStructure.TIM_Period=arr;   //自动重装载值# D, ~* I1 r5 j, }5 C- p
        TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;
. m% m5 x' y% }: q* T; r# b        ' ?+ V( g. X7 F
        TIM_TimeBaseInit(TIM4,&TIM_TimeBaseStructure);//初始化定时器14; z$ S  q) R/ L
        3 r6 j8 w% k  t1 R6 x
        //初始化TIM14 Channel1 PWM模式         
0 A$ \- ^: \* B# d; _7 q2 A        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //选择定时器模式:TIM脉冲宽度调制模式2( i" X$ M1 Y' B. w( ^; W% A
        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
7 D  t4 h5 s/ j1 V  x- J7 O4 z/ J        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出极性:TIM输出比较极性低' R" o  K4 m& m' G  C7 {
        TIM_OC1Init(TIM4, &TIM_OCInitStructure);  //根据T指定的参数初始化外设TIM1 4OC1
* F8 o* p- I/ J1 c! o$ [- n9 M1 D
4 k8 L$ w6 v5 W8 x" U
* q, r3 q0 y  t) O
        TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);  //使能TIM14在CCR1上的预装载寄存器$ K2 F3 D+ e& i1 d# z3 H( R/ v1 W

8 B1 b3 Y# L7 h) ~  TIM_ARRPreloadConfig(TIM4,ENABLE);//ARPE使能 & E$ \( B( |" D. U- |
       
  v7 s: }* o) o: y5 O6 H( y        TIM_Cmd(TIM4, ENABLE);  //使能TIM14
7 _4 L. b, v6 ]' T7 }5 X; y   ?) [: }/ U2 x" m9 ]9 N! H) C
                                                                                  
  Q6 K( y' S1 [5 ?% u2 P! \( B}    v/ ?  M( E3 _8 ]1 s$ i

9 G" x( k! Q+ [7 w7 t————————————————3 d, D, @; m$ d& I
版权声明:地板不会说谎! v! I$ P, m" P5 F3 U; y  d6 r

0 B' P0 B2 }. n/ g$ l0 b- \( d9 L4 c
赞 收藏 评论0 发布时间:2023-1-17 21:00

举报

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