请选择 进入手机版 | 继续访问电脑版

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

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

[复制链接]
STMCU小助手 发布时间:2021-11-23 20:45
平台:3 s6 i4 \; |9 G
+ z  ~* {2 T% y$ ~4 M$ e
20190731090150291.png

% X' c! x- B; C/ \; w, b* T( J) ?) k1 l3 m. a9 P. }! g& K( }( }
CubeMX配置:
. t0 A+ W% r1 b( \; j; ]1、RCC
, s5 m2 x; c7 |6 r
20190731090344124.png

7 t4 U& }( {) q0 _4 ]" f* B) L: m5 w9 ^" G( B
2、TIM14配置
) @  f2 Y+ K3 V- ?6 a7 s4 d4 [+ p9 z$ e  W5 M' K
2019073109045036.png

+ t8 l' `: Y9 j; w2 g6 [
20190731091304623.png

) S! f" x1 l7 A( V) H
20190731090614494.png
4 J, c8 @- L. ^, p4 w
4 r3 Z0 L# f: i
Prescaler和Period决定PWM的频率, f=48M/(Pre+1)/(Priod+1)
7 W9 ?0 ]5 ~- `1 r5 ]% ?Pulse决定PWM的占空比
9 b; M; M/ c; z: S& T占空比Duty=Pulse/(Period+1);' `7 S' o2 x7 m8 v+ r
( {, m& h: V# C6 [5 |
生成代码
3 m: J5 R) R1 M& r9 e1、tim.c
. t4 r8 a1 q, ~. _: a) {; N5 @  W3 q! d" D( E* x
2019073109173988.png

! T7 [, K* R3 E/ f+ |' V1 O2 k& B9 n
修改Pulse为30;则占空比Duty=30/(199+1)=15%
' w4 y' K+ R3 ^: w4 p9 ]' ~
/ o% i! G5 }; x) e& w( Q, }
  1. /* USER CODE BEGIN 2 */1 Q+ R" }, D  k' }  n
  2. HAL_TIM_PWM_Start(&htim14,TIM_CHANNEL_1);     //输出PWM( e" B$ A+ t2 z$ @6 I- S  r( i
  3. /* USER CODE END 2 */
复制代码
- g2 F/ }8 T: I5 q
在main()函数中添加PWM输出代码,即可产生频率为5kHz,占空比为15%的PWM
+ N1 [1 x+ D" E( K! w  {7 z示波器观察
( {% Q2 H; X8 {  I7 K, _6 U( A  ]; W; G
20190731092339387.png
4 e# T& r+ D. n5 r/ ]& u
2 N" I; n& n/ x( a
若如下修改Pulse的值,则生成占空比为30%的PWM7 U( X5 s  j/ `: v9 S9 [3 q# I

+ \( |( r2 B+ c9 w8 ^- U
20190731092515144.png

% ^$ N# x% E) M2 V+ b- \. Y( p: k$ _6 i6 g1 }- Z8 o$ p* \* @
示波器观察6 l! J0 `& e8 Z- x

0 E6 E& K* H4 g' `& f: P; j& I
20190731092644843.png

% ^4 i2 r8 M5 y; @( a; I+ g& k( r: `
同样,若定义变量n- L% s: @' ]6 n8 v5 E( h
main.c中
  }, ]$ n' Z2 T
  1. /* USER CODE BEGIN 0 */
    ; V* J( B. ~* T  z' R* ^, t" G
  2. extern uint16_t n;  `0 P) L0 N3 q) ?- B6 F3 J8 S1 K
  3. /* USER CODE END 0 */
复制代码
+ U' L. Z. ~) \. ^7 @% J0 F
tim.c中
4 {' ^" d0 O9 k' F- N4 `
  1. /* USER CODE BEGIN 0 */9 y6 x4 z# C6 s
  2. uint16_t n;6 Y; z3 A) y8 K1 ?
  3. /* USER CODE END 0 */
复制代码
Pulse的修改
) {" p- W/ E( t- \3 d$ q3 r. ]- j" V
  1. sConfigOC.Pulse = n*htim14.Init.Period/100;
复制代码
则n为多少,占空比即为多少(n%)。这样使占空比的变化和Period脱离开,不受Period的影响,可以独立改变。; p2 n; i  O5 L2 K! ]
$ R1 {1 _2 T. ^6 u) t6 A# \, n
5 T& H  p. y7 }9 o8 Y5 s& \
20190731091534976.png
收藏 评论0 发布时间:2021-11-23 20:45

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版