stm32控制直流电机. D' s. O4 T/ ~" v3 i) \: |
; t, H- X7 H: o# q
- #include "sys.h"6 O. `: F# R3 N0 n
- #include "DCmotor.h"; p( } h r6 ~) ~7 u
- void DCmotor_Init(void), D7 j7 a/ |' x6 m6 F$ e( z! F
- {2 ~' q k& C, A9 F' g. m& \
- GPIO_InitTypeDef GPIO_InitStructure;
) D- s# V$ L7 Z1 T# l0 E, M - RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);1 R2 F3 i) n" r5 e+ ~# ?6 o
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10| GPIO_Pin_11 ;; a# {+ b/ C4 O0 ^4 ?8 c
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;$ T7 A1 e# v$ R, d1 o# b1 V
- GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
# b/ n F7 u: [2 {: L, p1 ~ - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;; S' j3 k( _' r! W% b7 I
- GPIO_Init(GPIOA, &GPIO_InitStructure);
2 ]& o- f3 Z7 m6 N$ E1 l) e - GPIO_SetBits(GPIOA,GPIO_Pin_10);4 m& j) P P: _$ Q2 H' t3 H% |1 X
- GPIO_ResetBits(GPIOA,GPIO_Pin_11);# s8 r. U3 C% x) c1 [1 |. n# t4 ~
- 0 m) t5 H7 L7 R! P9 d \. k7 E
-
- {; q& D) }. j' { - ' H7 c1 A+ T; E2 U! G8 h$ V
- RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);+ `6 {* B: S- ~# n# n5 G
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 ;) Z `6 {3 Z" A5 `5 s5 g) ~
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;2 U8 Y7 \: k" E2 o( Q4 R
- GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;/ c5 |5 Z$ g N5 x" y
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;9 F" c5 P* |1 P, ?3 F0 D! M: l& C: C
- GPIO_Init(GPIOB, &GPIO_InitStructure);
1 a$ r" Y) b% e7 y& F - 8 Y- O. w/ f8 j# f
- & o0 |9 u% G- V) q1 t3 U
- }
3 E7 q4 \6 G' r& H8 O& L. w
& c* A' H* I( `# I
6 X7 g9 U: n/ }- void TIM4_PWM_Init(u32 arr,u32 psc)
3 U3 n4 W$ q! f _+ M! h: m8 D - { 4 B3 _$ N4 y* i+ c
- //此部分需手动修改IO口设置
3 H; Z# d8 ?9 h% l" o3 g - 3 j; C3 p _. o6 D+ D8 Y1 O
- GPIO_InitTypeDef GPIO_InitStructure;
% Z! x+ |# V+ M' A4 U6 _ - TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;% `( q' R) _$ C; u" s( ?
- TIM_OCInitTypeDef TIM_OCInitStructure;
" Q: k; j+ ]7 o -
1 g6 ?3 y) \* @. R7 C; X - RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE); //TIM14时钟使能 3 v5 T0 r. {% `; D& a% \* {
- RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); //使能PORTF时钟
" @2 a/ A5 a; T! P% O2 H -
( Y L) s# h% @2 D1 j - GPIO_PinAFConfig(GPIOD,GPIO_PinSource12,GPIO_AF_TIM4); //GPIOF9复用为定时器145 N, X/ u3 i4 |3 f
- - W! r- G8 P$ h* b# G5 V* u
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; //GPIOF9. @* M2 Z& E1 M: p
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //复用功能- |5 Q+ H) T: Z6 Q
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //速度100MHz5 W: t! j" N8 t
- GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽复用输出
, [4 O- |# X/ z: R& z V - GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉2 c/ n) I5 e& t' s
- GPIO_Init(GPIOD,&GPIO_InitStructure); //初始化PF9
- u8 _6 m( Y# \# X& Q" ^ - 5 x6 }& K& C; h% A. [( e/ B* a* s
- TIM_TimeBaseStructure.TIM_Prescaler=psc; //定时器分频8 c: n2 B% p! _1 V/ Q$ _2 B1 c" D' V
- TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式
& ^" ]0 d# a% n2 }6 i - TIM_TimeBaseStructure.TIM_Period=arr; //自动重装载值
% i! i ~5 ]: q* U Q w5 V - TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; D1 X6 a- V; F8 B. [
- ! B7 ~7 |* T+ L' F/ \( o( H, a( y
- TIM_TimeBaseInit(TIM4,&TIM_TimeBaseStructure);//初始化定时器14 j0 ]0 w8 s. o' n R" H
- * e: B8 C, @0 e$ T- a9 ~* w4 n: p
- //初始化TIM14 Channel1 PWM模式
f- Q' L: r7 B. | - TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //选择定时器模式:TIM脉冲宽度调制模式29 r* D% R5 d" D, v7 j# d- U1 _5 q
- TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
& x6 R. T! Z, \4 a" f3 O - TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出极性:TIM输出比较极性低
/ G v1 @/ W- E0 | - TIM_OC1Init(TIM4, &TIM_OCInitStructure); //根据T指定的参数初始化外设TIM1 4OC1. T) g- j0 [& N+ L# o! w- @' r0 z
$ L6 i) |/ H+ J4 f, a8 f- TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable); //使能TIM14在CCR1上的预装载寄存器- v8 A; V) `! S8 ~. l! j" t
- 0 x l0 `7 h* D; j- L; u
- TIM_ARRPreloadConfig(TIM4,ENABLE);//ARPE使能 ; Z# z4 }* T2 @. m, I4 L
-
0 T9 }, ~; F( P( ]2 J5 R - TIM_Cmd(TIM4, ENABLE); //使能TIM14% Y* s' x" J4 `8 W; v' F/ E
- * W6 H* T* K2 x8 A* R6 l+ \, Z/ m
- % G0 a" O0 Q( A6 `9 B4 h% B/ j
- }
% t. U* s* T* u5 c" p
复制代码 ————————————————
+ P% T# R6 S# u- P: T* R版权声明:地板不会说谎
* X. B' C( L" K2 B
: _% f5 V' v# j# X/ z R* P6 }) F/ I4 b& }
|