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

详解STM32的PWM输出及频率和脉宽(占空比)的计算

[复制链接]
eefishing 发布时间:2017-6-20 10:17

STM32电机培训online,大佬带你玩电机

; w; n  ~, v6 p. E5 z; \

) E! \, J3 m# l0 Y6 H

一、stm32的pwm输出引脚是使用的IO口的复用功能。

二、T2~T5这4个通用定时器均可输出4路PWM——CH1~CH4。

三、我们以tim3的CH1路pwm输出为例来进行图文讲解(其它类似),并在最后给出tim3的ch1和ch2两路pwm输出的c代码(已在STM32F103RBT6上测试成功,大家放心使用!)。

四、给出了PWM频率和占空比的计算公式。

步骤如下:

1、使能TIM3时钟

11.png

0 ?' Z2 d/ m% l, a3 G2 Q; }

RCC->APB1ENR |= 1 << 1;

2、配置对应引脚(PA6)的复用输出功能

12.png

GPIOA->CRL &= 0XF0FFFFFF;//PA6清0
* M2 `6 `6 K, y* X! GGPIOA->CRL |= 0X0B000000;//复用功能输出(推挽50MHz输出)9 j$ k5 `0 j$ \9 j. v5 l3 H
GPIOA->ODR |= 1 << 6;//PA6上拉

3、设定计数器自动重装值及是否分频

TIM3->ARR = arr;//设定计数器自动重装值(决定PWM的频率)
1 O  W* r' ]+ n7 G+ ] TIM3->PSC = psc;//预分频器,0为不分频

4、设置PWM的模式(有1和2两种模式,区别在于输出电平极性相反),根据需求选一种即可

13.png

注:TIMX_CCMR1决定CH1~CH2路,TIMX_CCMR2决定CH3~CH4路。

14.png

//TIM3->CCMR1 |= 6 << 4;//CH1 PWM1模式

TIM3->CCMR1 |= 7 << 4;//CH1 PWM2模式
( L4 i6 O) g& I* n' h TIM3->CCMR1 |= 1 << 3;//CH1预装载使能

5、输出使能设置

15.png

TIM3->CCER  |= 1 << 0;//输入/捕获1输出使能

6、自动重装载预装载允许位(ARPE) 及 定时器 使能

16.png

TIM3->CR1 = 0X0080;//ARPE使能(此句不配置也行); r, @/ z- c3 B% y( J4 u; t
TIM3->CR1 |= 0X01;//使能定时器3

下面给出TIM3_CH1及TIM3_CH2的PWM输出代码:

  1. void PWM_Init_TIM3_CH1(u16 arr, u16 psc)4 c2 y1 m; a) x5 ~
  2. {
    ; ^& U# y' p# @4 }7 u! C- b$ Q
  3.     //1、使能TIM3时钟   ; y8 t5 O# ~- w% z* [! g. O& L
  4.     RCC->APB1ENR |= 1 << 1;//使能TIM3时钟
    % i# }) m( \) t/ v' _
  5.     //2、配置对应引脚(PA6)的复用输出功能& Z! ^" w$ _$ L" a* ^4 ~8 k; h5 v2 ?/ X. }
  6.     GPIOA->CRL &= 0XF0FFFFFF;//PA6清04 P5 G: b1 q& K3 t' J" ^. D8 y
  7.     GPIOA->CRL |= 0X0B000000;//复用功能输出(推挽50MHz输出)
    3 T9 G' ~2 l& f
  8.     GPIOA->ODR |= 1 << 6;//PA6上拉   ! |3 R& `1 _) M
  9.     //3、设定计数器自动重装值及是否分频
    ; {/ E6 Y9 R6 l2 S9 s
  10.     TIM3->ARR = arr;//设定计数器自动重装值(决定PWM的频率), P1 e$ _8 O: X& v/ V
  11.     TIM3->PSC = psc;//预分频器 0为不分频
    ) ^# ], T6 W3 ^
  12.     //4、设置PWM的模式9 V7 t8 Q3 j9 R
  13.     TIM3->CCMR1 |= 7 << 4;//CH1 PWM2模式
    8 h0 [# v" Y5 u- v& k$ H
  14.     TIM3->CCMR1 |= 1 << 3;//CH1预装载使能    # ^0 y( `. X/ R% y+ _" H
  15.     //5、输出使能设置6 Z/ o, \, a, T2 o; m( W- n, d
  16.     TIM3->CCER  |= 1 << 0;//输入/捕获1输出使能
    , \: U  \8 }' W% t
  17.     //6、自动重装载预装载允许位(ARPE) 及 定时器 使能2 R2 Y6 }- _. Y4 ~5 b* b5 D
  18.     TIM3->CR1 = 0X0080;//ARPE使能
    / {" s8 {6 L0 X) a+ H4 T; p" \
  19.     TIM3->CR1 |= 0X01;//使能定时器3. f  e' F6 o* L' P; x' T/ P
  20. }& ?6 O" |' [- ~! {1 P+ {
  21. void PWM_Init_TIM3_CH2(u16 arr, u16 psc): H5 v8 j* [9 {4 Y6 I
  22. {
    / P: S1 H5 x' P" M5 f% q% ~
  23.     RCC->APB1ENR |= 1 << 1;//使能TIM3时钟; R+ u2 P- p+ |4 c* I+ F& ?
  24.    
    ( A! N' h$ r/ P0 R  x6 i( X
  25.     GPIOA->CRL &= 0X0FFFFFFF;//PA7清0% ^7 _1 |# U( r5 L# D
  26.     GPIOA->CRL |= 0XB0000000;//复用功能输出(推挽50MHz输出)
    ' M" M+ \/ c% Q( B9 g
  27.     GPIOA->ODR |= 1 << 7;//PA7上拉
    $ H2 X1 a( f6 V3 \6 v
  28.     TIM3->ARR = arr;//设定计数器自动重装值(决定PWM的频率)
    ) R9 v6 d1 q/ j2 U
  29.     TIM3->PSC = psc;//预分频器 不分频
    8 O8 Q3 A; U5 Y
  30.     TIM3->CCMR1 |= 7 << 12;//CH2 PWM2模式% o7 R: \# H9 N
  31.     TIM3->CCMR1 |= 1 << 11;//CH2预装载使能3 W' ?$ L4 z3 @" d+ ]3 c) G, B
  32.     TIM3->CCER  |= 1 << 4;//输入/捕获2输出使能
    " W$ l& J; G" p# q1 P# `
  33.     TIM3->CR1 = 0X0080;//ARPE使能
    ; {2 u; O. J( I; a
  34.     TIM3->CR1 |= 0X01;//使能定时器3
    . E) y* \# f" {4 H2 \$ A
  35. }
复制代码
2 {; T  H! k' h: b- ~

频率:

//Fpwm = 72M / ((arr+1)*(psc+1))(单位:Hz)% k% R+ x, F8 A+ m$ l
占空比:

//duty circle = TIM3->CCR1 / arr(单位:%)

注:本文方法的一个定时器4个通道的pwm输出的频率是相同的,但占空比可以不同!


" B6 ?3 F/ R3 N

评分

参与人数 1 ST金币 +10 收起 理由
MrJiu + 10 神马都是浮云

查看全部评分

赞 收藏 3 评论5 发布时间:2017-6-20 10:17

举报

5个回答
MrJiu 回答时间:2017-6-21 09:37:50
支持基础理论讲解!!!!!!!!
xmshao 回答时间:2017-6-21 15:06:19
谢谢!8 M- ^# L0 Q' F. [& F$ x
epochal 回答时间:2017-6-21 21:50:48
谢谢分享!
anny 回答时间:2017-6-21 23:54:39
不错的帖子,谢谢楼主的分享
sasikawyh 回答时间:2018-10-24 11:28:13
谢谢分享. F) U" J) [; N  b+ B. T

所属标签

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