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

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

[复制链接]
STMCU小助手 发布时间:2021-11-23 20:45
平台:
4 k7 q% q2 K/ Z/ r9 i9 {# i% z- F9 O3 S5 |. n& \
20190731090150291.png
! e1 z  \1 ?$ y9 g. C" k
- g6 P! Q( o5 H  W
CubeMX配置:
1 x  f$ U6 Z: Z" m1、RCC
! @0 g2 b  b, T: F0 `. F# ?, n  ~
20190731090344124.png

3 [% b$ }; C5 ]4 }+ w8 z* c% b$ j- f8 {6 u3 D- F
2、TIM14配置% _9 l2 M1 c  K) b$ J
# J- ^8 k; S6 e
2019073109045036.png
! R2 q- y- J  O' w8 P% {( k
20190731091304623.png

& q) ]4 x0 \4 K1 a9 V# o6 G
20190731090614494.png
3 D2 V5 h2 f/ n( H8 n0 q
6 T- I$ D4 r( p7 c$ s1 V
Prescaler和Period决定PWM的频率, f=48M/(Pre+1)/(Priod+1)7 r/ G/ F4 V( b( \/ e5 o9 K
Pulse决定PWM的占空比
7 @3 p% x( [  J$ ~  G占空比Duty=Pulse/(Period+1);* P5 t. x1 J0 q2 \

# X( v0 [# B9 s1 w, B& h生成代码6 m5 K" @( J/ i$ n  f( F. X
1、tim.c
# T3 M( b+ Z7 n( d) ]/ X* m% H8 J' t! j
2019073109173988.png

  ~8 G3 O1 a8 s9 n  E7 \/ T6 F0 A1 z, Q) r% O4 ~; I7 S. ?
修改Pulse为30;则占空比Duty=30/(199+1)=15%0 n. k7 f) t2 M1 h4 A5 S

: e2 X9 U* ?' }1 H/ o3 d: t3 ~
  1. /* USER CODE BEGIN 2 */
    # I5 I. X6 E/ a5 K2 M0 q
  2. HAL_TIM_PWM_Start(&htim14,TIM_CHANNEL_1);     //输出PWM* T0 z; p8 Y- L3 a# m% N( V: K
  3. /* USER CODE END 2 */
复制代码
7 s; B6 s, c% Z% c; M4 W
在main()函数中添加PWM输出代码,即可产生频率为5kHz,占空比为15%的PWM
% v+ S' K+ U& ]! P# C( K4 P示波器观察) |8 C9 X1 f9 I7 N, k
+ `+ i# y# k% ~; `8 d5 Y2 Y
20190731092339387.png
/ g% v3 l: I" ~/ ~' e& |

  B1 Z! |6 l& ?% k& Y8 M( b1 {若如下修改Pulse的值,则生成占空比为30%的PWM+ e, L& N) [, o# g' x

6 U; h  b& q5 b. u2 @. n# j. I
20190731092515144.png
$ n% l' j4 k; k: Q
, @4 M* t( V8 |% f9 u% b
示波器观察
0 a  P1 P: U* {5 R3 X/ c2 w; v0 j4 e( w' Z4 a2 S7 j
20190731092644843.png

0 U" d+ Z9 j9 {% P1 _( s) P- b, Z; p
同样,若定义变量n: w; I4 G. _. S5 X) F- d
main.c中
1 b8 z3 Z- K+ g! G  S/ o
  1. /* USER CODE BEGIN 0 */2 B1 m/ y) r1 G3 ], @: H
  2. extern uint16_t n;+ `: @( }2 C3 Z9 D
  3. /* USER CODE END 0 */
复制代码

7 m, L; ]$ |% T! ?tim.c中
2 N" k3 q3 V8 H0 S( M, V
  1. /* USER CODE BEGIN 0 */: V# P, V3 q. s% r8 S- N) c/ B
  2. uint16_t n;+ j. a+ C2 j$ j2 b8 D$ p6 ~4 D
  3. /* USER CODE END 0 */
复制代码
Pulse的修改
% T7 F. W) v, @, w& o* o( `+ Z
- d, Z7 a* o8 Z( F+ K' s4 o* M& a
  1. sConfigOC.Pulse = n*htim14.Init.Period/100;
复制代码
则n为多少,占空比即为多少(n%)。这样使占空比的变化和Period脱离开,不受Period的影响,可以独立改变。- \4 l7 S6 x" r, g" I; C
* h' ^: \6 B( T- h$ C8 e+ A
0 a3 R$ l9 O, u( @! {
20190731091534976.png
赞 收藏 评论0 发布时间:2021-11-23 20:45

举报

0个回答

所属标签

相似技术帖

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