STMCU小助手
发布时间:2023-1-17 21:00
|
stm32控制直流电机" b. |* F" V% [, B #include "sys.h" #include "DCmotor.h" void DCmotor_Init(void) {. ] z3 M, F I1 ` g GPIO_InitTypeDef GPIO_InitStructure;4 E. o1 I0 p2 ?0 [7 v RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);! X3 Y5 `/ p" p; N Y GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10| GPIO_Pin_11 ; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_SetBits(GPIOA,GPIO_Pin_10);+ p1 H i& D; l" ~, o9 q GPIO_ResetBits(GPIOA,GPIO_Pin_11);1 N* W0 c" Z4 ~4 e. |6 z: O * y! @9 `% u& r& x; m1 z. D V/ n' n! b- s+ R a : {, {3 z0 o5 v; m) p& f/ J( Z, J RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 ;$ ]" h: w( x! H$ p. r) L/ \ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;- X! o4 Q* K% u7 S) i" ~/ P GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;$ \( ~: _/ L- d- }: G) L: E2 d) \ GPIO_Init(GPIOB, &GPIO_InitStructure); } ! ]6 k2 k' R P/ y) O" K( N/ H " C. k1 o: ?+ ~/ h, i) j" `7 n" D. o void TIM4_PWM_Init(u32 arr,u32 psc)1 f7 j: P% y1 Q" Z/ \! }0 j% r { : \6 c2 G' K& {: j6 I( V/ `# o9 I //此部分需手动修改IO口设置 GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure;2 c' ]5 Y) O5 m) m RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE); //TIM14时钟使能 ) i6 O8 |1 h4 n4 b1 I t RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); //使能PORTF时钟 GPIO_PinAFConfig(GPIOD,GPIO_PinSource12,GPIO_AF_TIM4); //GPIOF9复用为定时器14 + a O3 H. j. v0 k( H GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; //GPIOF93 q0 g2 {1 ^% Q GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //复用功能% c' B |# C; a GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //速度100MHz' l* x+ E, Y9 X3 }, L GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽复用输出 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉 GPIO_Init(GPIOD,&GPIO_InitStructure); //初始化PF9 TIM_TimeBaseStructure.TIM_Prescaler=psc; //定时器分频 TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式 TIM_TimeBaseStructure.TIM_Period=arr; //自动重装载值. y; i3 @( `4 W7 S TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; / [% {, R2 x w( \* j TIM_TimeBaseInit(TIM4,&TIM_TimeBaseStructure);//初始化定时器14, T0 e O6 J# ?- Y //初始化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输出比较极性低. r7 H; t7 `: R" P8 q: G TIM_OC1Init(TIM4, &TIM_OCInitStructure); //根据T指定的参数初始化外设TIM1 4OC1! I7 B1 j" ~: ?# q TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable); //使能TIM14在CCR1上的预装载寄存器 TIM_ARRPreloadConfig(TIM4,ENABLE);//ARPE使能 , B5 I8 j5 y. `# u6 Q# z, U) }: X TIM_Cmd(TIM4, ENABLE); //使能TIM14. \4 e$ |! j) a# |3 l + ^7 _4 V. ?$ t; M* A& u0 v4 R( d7 N } ———————————————— 版权声明:地板不会说谎! Q) E" S1 V( i ` |
微信公众号
手机版