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

stm32控制直流电机

[复制链接]
STMCU小助手 发布时间:2023-1-17 21:00
stm32控制直流电机
9 n* c- J1 @5 l4 K) }5 L#include "sys.h"& t- H- b9 Y6 @$ {1 A# B' w& N
#include "DCmotor.h"
( f3 w: J4 W9 Q% wvoid DCmotor_Init(void)
$ ]3 f2 F) c5 [2 z{
; G  x  J# \2 Y3 H. I8 x# ]        GPIO_InitTypeDef GPIO_InitStructure;. ]: v# Z5 N3 a4 |$ V
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);/ i% w+ r, A* r
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10| GPIO_Pin_11  ;4 V7 S( |# \% v' F3 Y( |# G
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
7 k% z" @) u& F1 `2 Q$ w  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;/ M  T  H* n( l9 I) w/ }: N
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;- K% ~5 T; i3 m3 A. d- R( a
  GPIO_Init(GPIOA, &GPIO_InitStructure);0 L4 v* d4 l) M4 \4 J
  GPIO_SetBits(GPIOA,GPIO_Pin_10);) A5 C7 ~: z) w' J
        GPIO_ResetBits(GPIOA,GPIO_Pin_11);) U! y% j4 Z4 k- G# [
       
: y, C2 l3 \" H& ]       
% E1 ]2 @4 Z# X6 i, q; M       
( T# _' Y) D+ E* v7 V5 N  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
, b" u' E  k' `, f( H* m  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8  ;2 k0 x9 c' l; Z6 z3 e9 ]: E
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;6 i2 v( n, X5 m
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
, `! Z) p% x# }. }2 v: J  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;0 f8 u5 S- P& Y5 e$ I4 ?
  GPIO_Init(GPIOB, &GPIO_InitStructure);
4 W; g- F) d+ K/ `  4 n- X- @0 o. c/ [7 y
          N3 Q4 m3 Y, C' a/ R
}: r! j, z# E/ K, g3 z8 q0 e
, ?# z- p. [7 ?- v6 L0 Q+ ~. x  t
! z. z, N% P5 k

8 m, n3 `( [1 v: d9 ^4 h$ ]* b

: L. ~5 x% [9 k$ F! I$ {void TIM4_PWM_Init(u32 arr,u32 psc)4 S+ z, v& Q5 P6 V* z2 Z" n( S8 x' B
{                                                          
: \$ h# P" U& `+ a! b        //此部分需手动修改IO口设置' e4 F9 K. }. n  T+ |, A
        ) ^# g$ C* H. j9 H
        GPIO_InitTypeDef GPIO_InitStructure;
( J$ A; n! D6 S+ V        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
" N) z2 y" Z2 F5 @0 r( W* S        TIM_OCInitTypeDef  TIM_OCInitStructure;
, `; u- {; Q6 U; S- ~          ?0 R% m1 V- F5 T9 i2 j5 W# }
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);          //TIM14时钟使能    % {  {% h3 q7 |( e
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);         //使能PORTF时钟       
7 h* h- f: R4 x+ _) F       
! ^' C( c- v4 d        GPIO_PinAFConfig(GPIOD,GPIO_PinSource12,GPIO_AF_TIM4); //GPIOF9复用为定时器14% F  A  X* h% W; {  J7 P: |
       
" J5 V3 c# s/ C3 o1 a        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;           //GPIOF94 J1 n( ]. |; G& z
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;        //复用功能
$ T0 P' M0 J8 o# Q& v5 W* a        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;        //速度100MHz
, V: Z  y, C! P) j' F% K# a; T- j        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;      //推挽复用输出7 c% L) {1 T: K3 W* \( |) l. i5 V
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;        //上拉- Y  G% g0 X1 K
        GPIO_Init(GPIOD,&GPIO_InitStructure);              //初始化PF97 O0 a6 q9 W( P  n. h
          
- ~& r: y; @! r0 K* p        TIM_TimeBaseStructure.TIM_Prescaler=psc;  //定时器分频, l# F% t4 {" X  I' F. \/ g4 Q7 B) P
        TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式- _# L- d! F: V- ^! F
        TIM_TimeBaseStructure.TIM_Period=arr;   //自动重装载值
* L8 h* e# J3 R3 x        TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;
; F" h' Y5 A( r5 F2 n* R        3 p- c* T1 }0 Y! B/ J5 n: b% k
        TIM_TimeBaseInit(TIM4,&TIM_TimeBaseStructure);//初始化定时器148 C! G$ R! k5 [& H8 |2 Z
       
- F0 o. @! n$ Q- v5 d6 M5 a  H        //初始化TIM14 Channel1 PWM模式         
$ m0 Q7 q+ I4 k        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //选择定时器模式:TIM脉冲宽度调制模式2
1 \9 P5 U' _( L# D         TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
7 k) {' L" c7 z. G! y        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出极性:TIM输出比较极性低
) r3 k8 d( p0 p        TIM_OC1Init(TIM4, &TIM_OCInitStructure);  //根据T指定的参数初始化外设TIM1 4OC1
7 g# t" ]5 }/ O! ~- O3 a" f1 L& _, W% ~  F  ?
* a" _( i$ \7 y
        TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);  //使能TIM14在CCR1上的预装载寄存器7 m! }7 i, v+ D+ Y$ x7 h) a
' \1 L" s. A9 J$ d4 r. L+ ]) L, m
  TIM_ARRPreloadConfig(TIM4,ENABLE);//ARPE使能
; d/ u' T' b7 {  u) Y" Q. P        6 g  s& |' s% X* }. h1 w# B
        TIM_Cmd(TIM4, ENABLE);  //使能TIM14. [4 t* j9 z6 a; s1 G  ^; N8 p

2 n2 C' d5 ^% U4 t6 p* z                                                                                  
* `* P  [4 B/ @$ C' O9 [7 l7 V+ ^" c" Z}  
' n- G, H5 y0 A0 @- q" s0 F) T. u0 b7 q( a: T+ R) k9 Z: V" u  w
————————————————( }: H" q3 Z# z; i4 ^$ t6 e
版权声明:地板不会说谎
$ T( l) Q6 H' N: M8 a" J  R9 t! O: J; k/ L
赞 收藏 评论0 发布时间:2023-1-17 21:00

举报

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