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

基于STM32F103的控制舵机方法

[复制链接]
攻城狮Melo 发布时间:2023-3-14 16:39
  1. //TIM4 PWM部分初始化 * S$ A) `9 G4 M. E% ~  m2 ?8 H
  2. //PWM输出初始化
    ! a: I6 c  _! A
  3. //arr:自动重装值6 L6 {: o* \8 N/ N1 F6 B/ t6 D
  4. //psc:时钟预分频数! j( o2 ?" O; e: g' B
  5. void TIM4_PWM_Init(u16 arr,u16 psc)7 R8 D+ c, |- ]
  6. {  
    + C+ o% a; L' }2 _1 B+ u
  7.         GPIO_InitTypeDef GPIO_InitStructure;8 B: B) S, b* Z2 W
  8.         TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;& T1 A7 q, {. h; Z4 o9 d
  9.         TIM_OCInitTypeDef  TIM_OCInitStructure;
    7 w! ?. _& j% k- Y0 e
  10.         ( [7 Z% }* ?2 `0 }0 m
  11. 2 G& X+ d6 e4 |+ F0 o  w
  12.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);        //使能定时器3时钟! A/ T2 _; X" n8 ~& F
  13.          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB  | RCC_APB2Periph_AFIO, ENABLE);  //使能GPIO外设和AFIO复用功能模块时钟9 G  H, m6 R9 h2 r1 T
  14.         
    ; V, G7 X- m' m/ S' M. e

  15. 4 R5 s7 ?8 w- @* O3 l
  16.    //设置该引脚为复用输出功能,输出TIM4 CH2的PWM脉冲波形        GPIOB.5
    7 r5 h  s, k- j1 X1 K; f, L9 Z
  17.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; //TIM_CH2
    ( v' |% F2 L" C3 u2 O0 V9 L
  18.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //复用推挽输出
    ! @, L/ `0 m. R8 w* W
  19.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    - @2 x" s' p# }# v. W
  20.         GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIO
    ( ]5 A9 X. k3 A  F; m  x# w
  21. $ F' {4 {# ]; v/ s
  22.    //初始化TIM4' N0 x6 `" g+ x
  23.         TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值9 v* t: Y" \; b1 M, @% T' a
  24.         TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值 8 w: O( Z- `( L' l$ |
  25.         TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
    . n! n3 L- K' k% g
  26.         TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式
    2 U1 l8 o# B+ o- u: y
  27.         TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
    * R' a2 `! w7 d) t
  28.         1 s  I% `+ y! n. Q1 q
  29.         //初始化TIM4 Channel2 PWM模式         1 u+ }  G  Z* q4 I& ?. J2 d# C& z
  30.         TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //选择定时器模式:TIM脉冲宽度调制模式2: Q5 {; X' r; `, n( b- y9 _- D
  31.          TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能5 o7 g. G0 W6 y6 s7 H  [
  32.         TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高  a* _6 j- O: z& h( e& w
  33.         TIM_OC2Init(TIM4, &TIM_OCInitStructure);  //根据T指定的参数初始化外设TIM4 OC2
    + \. U  q; d% ^& R( h! \/ n* K
  34. , F: E, L" z& z* a, H  {# z
  35.         TIM_OC2PreloadConfig(TIM4, TIM_OCPreload_Enable);  //使能TIM4在CCR2上的预装载寄存器3 z8 a9 t6 ^: [* [/ ^/ a! s, m& K

  36. ! T, x" C& m6 Z  _7 n
  37.         TIM_Cmd(TIM4, ENABLE);  //使能TIM43 o: A9 y( m' I, z3 a
  38.         
    $ d$ q( A) A, {$ v# ~, x4 D; \5 m& ?' Z7 |

  39. 4 y' X9 X/ W$ I; x' D6 a. w9 ]0 e
  40. }
    ! j. S% u, _" A4 T8 }+ e4 f
复制代码
: Q7 r7 g2 l4 {2 \5 G! W$ |# B' W

/ y) o6 l) f" E$ A+ h! x设置定时器周期为20ms2 B, y: }1 Y; r
  1. TIM4_PWM_Init(20000-1,72-1);        / _4 R) N" H5 a$ {
复制代码

: n' J5 [# ]- T( {. i设置高电平时间为0.5ms,对应0度# T6 |1 T# l4 s
  1. TIM_SetCompare2(TIM4,20000-500);3 Z: s/ C8 @, W% g" G) X
复制代码

' f: i% M- I+ \( t7 e/ r设置高电平时间为2.5ms,对应180度; w( R4 {3 w4 E& l7 N% W
  1. TIM_SetCompare2(TIM4,20000-2500);
复制代码
————————————————2 |: C$ i" t$ I4 T
版权声明:小盼你最萌哒7 C$ `- _2 o  M) k$ I
如有侵权请联系删除; l( O3 n- s) [# X
赞 收藏 评论0 发布时间:2023-3-14 16:39

举报

0个回答

所属标签

相似技术帖

官网相关资源

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