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

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

[复制链接]
STMCU小助手 发布时间:2021-11-23 20:45
平台:
7 g. M0 g) p7 o+ {- Z, f; Z. L0 \' J' L& o  n2 u8 ~$ M2 `9 p6 F
20190731090150291.png
: `) m- R. l3 w& f' {& ]. M

+ I$ r' G! R7 gCubeMX配置:
' N! ?+ K' _% _9 M! P& ^( X# c' h! F/ n1、RCC2 D* k1 _$ I' k' G
20190731090344124.png

0 C* Y+ s1 T9 w3 Y& B! \3 _, Z6 `  X+ N5 |& F0 S" M/ l
2、TIM14配置  K3 |8 x& B: W& O1 h
: v( l6 z9 D" }! v
2019073109045036.png

1 E( j" c# o& @
20190731091304623.png

  j( U; ~! P& o- ~' `* p2 T
20190731090614494.png

3 k( P" m2 b  H1 `$ ?7 x
3 l0 o9 i7 x; u% C6 R" b4 ]Prescaler和Period决定PWM的频率, f=48M/(Pre+1)/(Priod+1)( J* d& y) {, o6 ]
Pulse决定PWM的占空比# G1 c9 A" f: G" }: ]
占空比Duty=Pulse/(Period+1);' |* k* s9 |# C2 i) I' d/ I

9 K5 D3 t1 l1 ~9 R生成代码
( O& U" J2 b+ n9 A" H1、tim.c
) f* t4 g: x1 r1 f+ U/ O/ S5 _$ @/ j9 ^
5 i) R3 W- X2 E4 |& t
2019073109173988.png

5 I9 e3 |8 {4 v1 V6 ?7 W; g
% O* o# \5 b+ Q* a. o& `9 M7 C修改Pulse为30;则占空比Duty=30/(199+1)=15%
, }& T/ o9 D$ H. s: P
2 s: ^9 j( C, u1 p4 i2 v: L
  1. /* USER CODE BEGIN 2 */! G2 ~( i# S6 W( t
  2. HAL_TIM_PWM_Start(&htim14,TIM_CHANNEL_1);     //输出PWM0 K4 _" f1 s8 U; }7 Y
  3. /* USER CODE END 2 */
复制代码

- i! Z* h9 n7 a* J8 v# Z" s在main()函数中添加PWM输出代码,即可产生频率为5kHz,占空比为15%的PWM% o% |0 ?. g0 S
示波器观察$ w/ ^3 G/ h. B% v" M9 [( K# |

' }# Q. f+ |/ m: ~% P4 o: i( F
20190731092339387.png
2 K4 n- Z8 x/ i  J

7 b9 A' J4 Y: c/ l& W若如下修改Pulse的值,则生成占空比为30%的PWM
! E8 `" O- y9 B/ }! d" B6 h" c
0 `. m6 H5 l4 B! q9 K
20190731092515144.png

: X! }4 j: n; J( u0 i( H  ^9 f, N% w/ K
示波器观察
* c# ]4 }+ u0 y$ U; P. S6 V9 w' r3 u
20190731092644843.png
) w! H9 }7 Q, u$ z

5 n( b# p' I- o( y( ~7 A同样,若定义变量n
! W# i. ?; w/ s' Q, smain.c中  j' t/ m8 A5 |
  1. /* USER CODE BEGIN 0 */
    ; H9 s+ J1 _1 U7 N2 D
  2. extern uint16_t n;! h0 b5 h4 W6 U; r) e3 d
  3. /* USER CODE END 0 */
复制代码

! F- |- o! n5 I# v% }! Gtim.c中
- ?1 _- [& ~6 E. V1 }
  1. /* USER CODE BEGIN 0 */
    . J& C  K8 q) T& O+ a" q6 t% V
  2. uint16_t n;% t# _* _0 B2 d: j
  3. /* USER CODE END 0 */
复制代码
Pulse的修改
: U0 Y& P4 M/ A0 u: G$ W6 A
; B2 n$ P1 q* R- v  _
  1. sConfigOC.Pulse = n*htim14.Init.Period/100;
复制代码
则n为多少,占空比即为多少(n%)。这样使占空比的变化和Period脱离开,不受Period的影响,可以独立改变。/ E' K& G1 D0 f2 I) f! Q0 S) I% x

' |% |1 B& a2 {
/ k! T2 C" b! z& p6 p
20190731091534976.png
赞 收藏 评论0 发布时间:2021-11-23 20:45

举报

0个回答

所属标签

相似技术帖

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