STMCU小助手
发布时间:2023-1-17 21:00
|
stm32控制直流电机 #include "sys.h"& t- H- b9 Y6 @$ {1 A# B' w& N #include "DCmotor.h" void DCmotor_Init(void) { 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; 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# [ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); 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; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;0 f8 u5 S- P& Y5 e$ I4 ? GPIO_Init(GPIOB, &GPIO_InitStructure); 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 void TIM4_PWM_Init(u32 arr,u32 psc)4 S+ z, v& Q5 P6 V* z2 Z" n( S8 x' B { //此部分需手动修改IO口设置' e4 F9 K. }. n T+ |, A ) ^# g$ C* H. j9 H GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; ?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时钟 GPIO_PinAFConfig(GPIOD,GPIO_PinSource12,GPIO_AF_TIM4); //GPIOF9复用为定时器14% F A X* h% W; { J7 P: | GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; //GPIOF94 J1 n( ]. |; G& z GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //复用功能 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //速度100MHz 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 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; //自动重装载值 TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; 3 p- c* T1 }0 Y! B/ J5 n: b% k TIM_TimeBaseInit(TIM4,&TIM_TimeBaseStructure);//初始化定时器148 C! G$ R! k5 [& H8 |2 Z //初始化TIM14 Channel1 PWM模式 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //选择定时器模式:TIM脉冲宽度调制模式2 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出极性:TIM输出比较极性低 TIM_OC1Init(TIM4, &TIM_OCInitStructure); //根据T指定的参数初始化外设TIM1 4OC1 1 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使能 6 g s& |' s% X* }. h1 w# B TIM_Cmd(TIM4, ENABLE); //使能TIM14. [4 t* j9 z6 a; s1 G ^; N8 p } ( a: T+ R) k9 Z: V" u w ————————————————( }: H" q3 Z# z; i4 ^$ t6 e 版权声明:地板不会说谎 R9 t! O: J; k/ L |
微信公众号
手机版