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

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

[复制链接]
STMCU小助手 发布时间:2021-11-23 20:45
平台:$ {" I+ t) I3 o2 b4 W% Q! U

0 N+ y: B" B! n( {% \. P# q6 \
20190731090150291.png
2 h4 I- p& x( \5 L
# O$ F" a5 d5 `* ?  H4 T/ y
CubeMX配置:
" j5 s* c( r7 d) Z: z( }1、RCC* C6 g3 G  y" `8 O1 k/ Y
20190731090344124.png

# K' C/ x5 w3 C4 d7 i& u. L3 z2 g5 b; @! r8 T' Z* s
2、TIM14配置
. {/ `& |0 m- B- ?  o
  X: ?1 n$ R. E
2019073109045036.png

% x5 G- M# h6 D& E9 @2 h) X" `8 Q, t
20190731091304623.png
! R: _* Y1 N) v6 B2 n- p
20190731090614494.png

  \3 `- g0 q4 N4 I9 F+ J
$ Y$ b  Y8 o. U2 x# z0 \Prescaler和Period决定PWM的频率, f=48M/(Pre+1)/(Priod+1)
  W' K: D  Q0 V( n. S3 a: o4 m& bPulse决定PWM的占空比% ?1 E& h, v+ i& _7 V
占空比Duty=Pulse/(Period+1);2 o9 |% |8 [) D5 F; c
0 W- K6 o8 h$ K, {
生成代码+ ~: m$ Q) J' |7 e) x1 g
1、tim.c1 h: u" Q3 W+ S5 ?2 U4 t+ s

- N: N% [( M3 f. \
2019073109173988.png
/ C8 v# V5 a! \5 Z3 K3 v3 I! t
. c5 ^0 a0 g6 x$ Y
修改Pulse为30;则占空比Duty=30/(199+1)=15%# Z0 A0 N4 z; a' M. |
2 Y' B0 m$ F+ O- B
  1. /* USER CODE BEGIN 2 */- f/ a: e* J, |* w3 s' z
  2. HAL_TIM_PWM_Start(&htim14,TIM_CHANNEL_1);     //输出PWM% ~9 ?7 O6 U9 o7 r) }( [. V
  3. /* USER CODE END 2 */
复制代码
5 d3 u* ]9 L) I; O
在main()函数中添加PWM输出代码,即可产生频率为5kHz,占空比为15%的PWM" P2 K% O6 Q, v% w0 `7 u
示波器观察5 F4 c$ j5 @0 E5 O$ N! B8 z4 }
; ]6 X3 t: A" U  Y- Q, ], h
20190731092339387.png
0 s1 A2 F- c" e

7 |$ w3 ~( C( M' Q. j$ |若如下修改Pulse的值,则生成占空比为30%的PWM
- h, D, ?; A3 f2 g* {1 I' b: i; M/ m) d: J0 t/ N2 t' t. O
20190731092515144.png

# Z% Q+ J7 K' @& X) G! K9 r
. L/ }1 h7 S% X5 A  V9 k5 F# U示波器观察
) Q6 n. g- s4 N% N. A" O+ A3 c
0 ~% M; y% y8 \9 X& r; N
20190731092644843.png

# k0 H+ w1 Y# d% G0 ?$ S
3 f9 ^! N6 B! j5 m8 L  D: B6 ]同样,若定义变量n
: P4 [2 ]1 M6 n/ |1 A) o  Y" Hmain.c中
  ^  ]1 u- d" o: Z8 n
  1. /* USER CODE BEGIN 0 */
    " y4 Q& u7 l9 q& S7 ]
  2. extern uint16_t n;+ E% [+ c  B% T! }% [) `
  3. /* USER CODE END 0 */
复制代码
% [: \3 y) g7 h  G- r/ s  L; ?
tim.c中+ C" B1 Y4 E3 [  R" @% Y
  1. /* USER CODE BEGIN 0 */% X0 Z! R/ J0 W: \
  2. uint16_t n;
    % E8 q  S% |: C, v
  3. /* USER CODE END 0 */
复制代码
Pulse的修改- e- `' M5 a* p( t$ {

& W4 @# F# \4 L7 A! W) P/ d; I3 {$ E
  1. sConfigOC.Pulse = n*htim14.Init.Period/100;
复制代码
则n为多少,占空比即为多少(n%)。这样使占空比的变化和Period脱离开,不受Period的影响,可以独立改变。6 o4 Z- s9 T  m4 l

) K- A# N0 t; X6 A! r, A+ _( D% s
20190731091534976.png
收藏 评论0 发布时间:2021-11-23 20:45

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版