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

【经验分享】【HAL】stm32F0之PWM输出

[复制链接]
STMCU小助手 发布时间:2021-11-23 20:45
平台:5 O8 d0 j/ V- P5 W7 c+ O
% {0 l5 d0 U6 P' j7 K6 d- [
20190731090150291.png

  I4 U) m, Y2 a& d: `
9 ^" m$ V% k5 T7 \0 g4 ^6 y& ~CubeMX配置:
: Y3 n8 }5 U9 A1 k5 j1、RCC
8 W* o2 M' D/ }$ @2 b( W! z& e
20190731090344124.png

) O) Z: j8 I8 b7 u: H
* `8 N4 `7 ~5 r4 W0 x: ~2、TIM14配置
- x4 E8 M9 e, Q, P3 L! i1 x2 B4 ?2 N& |/ ?
2019073109045036.png

$ w& r% ?; P! t4 v2 Z
20190731091304623.png

0 A6 C5 }. j* T3 Q9 S1 g' B
20190731090614494.png
6 Z/ q$ Q) t' N5 w( |5 b

: T! c: L! a1 MPrescaler和Period决定PWM的频率, f=48M/(Pre+1)/(Priod+1)
! ^4 ~( Y: H2 {0 M1 L$ \' I3 X0 QPulse决定PWM的占空比
2 d& I( f5 n% c占空比Duty=Pulse/(Period+1);$ n5 A7 d1 H+ r* }" W" b7 L. E# Q

: ]! ?- W5 Y+ e& D! Y; f+ G生成代码
* \+ z) O7 v6 |, p; h1、tim.c" b) S# c8 ?9 ]+ L8 b- [, @
6 I0 p" S2 U6 W" G
2019073109173988.png

* l* b4 n8 L* t8 }$ _  T. \
1 s( k+ m" L1 l) n0 H' p6 G修改Pulse为30;则占空比Duty=30/(199+1)=15%
$ \4 ^) k  A# u3 p8 A! L( P
" @1 i3 }$ N* j/ a% F
  1. /* USER CODE BEGIN 2 */
    ) [2 B3 u, A- j! t; Y
  2. HAL_TIM_PWM_Start(&htim14,TIM_CHANNEL_1);     //输出PWM
    # a' R5 E  a7 o/ d/ L# w/ e
  3. /* USER CODE END 2 */
复制代码
2 S9 T/ }' q+ {: o: r' C
在main()函数中添加PWM输出代码,即可产生频率为5kHz,占空比为15%的PWM
7 r) W6 {7 Y; r% i示波器观察8 h' x! ~; @& Q" v7 n, h
5 e0 c- B! x& p/ y0 ^' z1 e
20190731092339387.png
- X" B( j+ N& K8 h9 N9 w: B
8 I2 R( T2 Q  b4 k  V$ \2 n, `
若如下修改Pulse的值,则生成占空比为30%的PWM4 y( A7 G/ M/ k0 M7 G- j# O

9 J# U5 N' }+ ?
20190731092515144.png

; Z0 _7 w2 Z1 _( s0 n1 k# @6 X3 d% c: k* r6 M5 Z' d
示波器观察( u9 r) U3 o# k" v1 g
1 B' U2 R. B$ o  a0 e, d# n2 O6 J
20190731092644843.png

: R0 C) N: r1 M% v
, y1 {  J8 y( s+ R" L; z: g同样,若定义变量n, I2 o; |4 S, b; U
main.c中  |  c' A( m9 F9 O/ ~
  1. /* USER CODE BEGIN 0 */4 P1 b  G4 H/ W! Z8 i( `2 [9 Y
  2. extern uint16_t n;3 t6 p8 b( Q( B( H0 R3 K
  3. /* USER CODE END 0 */
复制代码

- l) j0 F3 n: c6 f( M7 r" mtim.c中
1 s4 O  K' o8 S7 ^
  1. /* USER CODE BEGIN 0 */. _# j) w& S( r: b$ G( L6 V
  2. uint16_t n;/ |. q! R( b' J3 K
  3. /* USER CODE END 0 */
复制代码
Pulse的修改( o8 q9 g0 j) x( u1 M

5 ~9 F: s! Y6 d/ _0 l
  1. sConfigOC.Pulse = n*htim14.Init.Period/100;
复制代码
则n为多少,占空比即为多少(n%)。这样使占空比的变化和Period脱离开,不受Period的影响,可以独立改变。, I  d) E* Q6 \* j) r

' k) o4 A$ L( d9 B8 m* u3 r
9 H' x+ [$ n$ e* B' }
20190731091534976.png
赞 收藏 评论0 发布时间:2021-11-23 20:45

举报

0个回答

所属标签

相似技术帖

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