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

stm32控制直流电机

[复制链接]
STMCU小助手 发布时间:2023-1-17 21:00
stm32控制直流电机9 z( {1 o" ?: I# m  k. B/ V
#include "sys.h"4 V* f( g7 I+ G' i
#include "DCmotor.h"/ P* J" J; Z. m, L
void DCmotor_Init(void)
/ [/ U- D# Q8 v  G: S{1 S- u' `* Y; J7 r& ?: d
        GPIO_InitTypeDef GPIO_InitStructure;% Z1 `* Z" c) U& }2 m
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
2 Z7 u3 [- H. F& u, u  }- l; B  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10| GPIO_Pin_11  ;
" K- S5 {  g6 O5 q8 a  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;, M5 l$ z' ~  s# W- ^9 Z
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
* m8 |% g6 r" U) x6 w& @0 W* V  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
8 f2 z! {3 C6 }5 q& {3 P2 ]  GPIO_Init(GPIOA, &GPIO_InitStructure);3 w# G4 i4 ~; m3 ~4 `0 o5 a
  GPIO_SetBits(GPIOA,GPIO_Pin_10);
8 }1 E0 w/ q7 R$ P5 n        GPIO_ResetBits(GPIOA,GPIO_Pin_11);
% U- q3 l+ Q+ d  |4 M3 s       
& S$ e, U6 m) m( J7 E2 w        - A+ b* P5 O# [9 `7 v
       
9 R6 f1 m, W8 b$ e  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
6 D0 J: J, ~2 y7 N: C& e3 [  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8  ;
: ^  G% @0 z+ X1 O4 Z$ x  c  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
! k$ t' X/ T+ a3 X/ H+ \8 n) S- C  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;* g2 e7 o$ d7 _9 X# ]4 j+ q
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
+ M! {: }; i' ?: u  GPIO_Init(GPIOB, &GPIO_InitStructure);% K% C) d8 x4 U+ U
  
7 r2 y9 X6 e" L9 W% [       
5 c9 L" M3 f: e4 V6 i& i}/ P& G% C9 h' g; w: V' P" O1 W  y

; M4 Q  d# w3 U1 X3 z6 t

+ V, i2 A' D; u$ Y$ Q) z
8 h. D0 `8 w2 M
7 b! i( G# E& L5 I# ?2 Y
void TIM4_PWM_Init(u32 arr,u32 psc)& _) O) b8 k: x: e
{                                                            w  l& ~! ^5 {: ~& t
        //此部分需手动修改IO口设置
+ c7 V6 E$ z: m) u0 u% a8 X& W        + @! g$ w. d. K- A* f' Q6 |
        GPIO_InitTypeDef GPIO_InitStructure;
5 J6 Q* d' ^/ ~" C; K        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;0 v( H4 o! z- e2 g6 u
        TIM_OCInitTypeDef  TIM_OCInitStructure;" X, j1 v- Z% c" L9 |, r
        % E7 Y8 R% R6 g5 F1 _$ n6 G' v" y
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);          //TIM14时钟使能    " w; T7 V, J6 ]! {, k1 ]
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);         //使能PORTF时钟        ) N8 S$ A+ g+ b; T
        8 a; R, A( P$ Z# _7 n! [2 E
        GPIO_PinAFConfig(GPIOD,GPIO_PinSource12,GPIO_AF_TIM4); //GPIOF9复用为定时器14
1 _0 }, q4 B* Z  T        # [/ G2 F. n- G& }* |
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;           //GPIOF9
7 Z! [$ U) ]( W1 }, Z        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;        //复用功能- w5 ^# |5 A& j* V% M4 \+ R
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;        //速度100MHz
- ]7 \8 h* K7 \9 Q' K        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;      //推挽复用输出
; ]3 l3 B& R1 ~+ A# D        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;        //上拉
% ], F! q& x2 ^        GPIO_Init(GPIOD,&GPIO_InitStructure);              //初始化PF9  B+ d& [/ Z4 H1 L8 o
          
6 U  X8 P- ~% `6 j        TIM_TimeBaseStructure.TIM_Prescaler=psc;  //定时器分频
4 o0 n# l. _5 I/ h" u3 w        TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式/ I7 m- Q; I3 x7 I* _# ~7 n
        TIM_TimeBaseStructure.TIM_Period=arr;   //自动重装载值
+ L5 [2 O/ ]' G( ]0 b. M" O        TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;
+ r, a0 s' I& e" W* g  ]1 R" w        * F  G9 Y! l, W( a" T7 w
        TIM_TimeBaseInit(TIM4,&TIM_TimeBaseStructure);//初始化定时器14
- q' _/ E1 T2 w        . v! [; W: y% V  B; E
        //初始化TIM14 Channel1 PWM模式         / ?3 b# }' K# g+ y0 D; z
        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //选择定时器模式:TIM脉冲宽度调制模式2
& i  m' Y3 [1 a1 i( g( q3 u- S" x         TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能  l, x" g7 B6 ^! n
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出极性:TIM输出比较极性低
$ m* x$ M9 S$ n        TIM_OC1Init(TIM4, &TIM_OCInitStructure);  //根据T指定的参数初始化外设TIM1 4OC1
! @( {/ P# v' D, I) b" H( `9 \/ t6 f& G5 Z- O8 e( j3 f
+ C! t/ H5 p$ l  L' L1 E. o
        TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);  //使能TIM14在CCR1上的预装载寄存器" B9 t* @& `. i$ |- `8 _
. G/ L0 C0 [! U* f& ~% i; |
  TIM_ARRPreloadConfig(TIM4,ENABLE);//ARPE使能
8 `/ k& q! H1 o4 V, Z- I. H, `        3 a3 `# s* F* j5 z9 ^  F
        TIM_Cmd(TIM4, ENABLE);  //使能TIM148 B0 h2 |* P2 @% v4 j2 ]
) F5 D! |5 S* b
                                                                                  ) w' C9 z& e9 m& f
}  4 x6 f$ n9 D2 a2 [! S

% U  q1 N1 d3 b: n————————————————  V# I+ [; L9 u* F9 F& e  ?
版权声明:地板不会说谎
# C4 N; A: G$ p) d0 u
7 J# N1 W. L# [0 V0 _5 m8 q0 ?: @
赞 收藏 评论0 发布时间:2023-1-17 21:00

举报

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