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

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

[复制链接]
STMCU小助手 发布时间:2021-11-23 20:45
平台:, s$ E6 g1 D# B" P0 r8 H3 ^; D

. h2 @2 d, H" t
20190731090150291.png
! {6 r: ^) w" \5 t1 t2 F( T# {

+ Z' K- e' a9 T; j4 L9 _CubeMX配置:1 {/ v  p: _, n* t; Z& T
1、RCC. {5 g  d$ v: Z  a$ V2 m! r
20190731090344124.png
/ w/ d% F5 y$ D0 X, x& n

4 L3 b5 M5 I* M: b2 r' ~2、TIM14配置
* \7 C$ L1 O" u
$ n# |/ k0 G. Q
2019073109045036.png
! w) a) P2 V8 \8 m, T
20190731091304623.png

% }5 _% E# m' V  Z- K4 n
20190731090614494.png

, I; V: Z( r" @+ ?3 o4 ]; p% ~# W; C$ w0 z" ]" O* G6 A# K
Prescaler和Period决定PWM的频率, f=48M/(Pre+1)/(Priod+1)# c% g: v& y* r) _6 ^( D
Pulse决定PWM的占空比
! k3 |  H7 Q2 J! x. R* [占空比Duty=Pulse/(Period+1);5 \2 `3 z. c' ^8 F, o) K1 a
/ o2 S/ `+ W9 I8 a
生成代码
( r4 _+ P! B# J* x1、tim.c
1 y6 C! T" j& f* {* _, C. e
1 d7 G' ~% K/ l! p& g1 R
2019073109173988.png
# Z2 @+ ]" l, z

- n1 f( b9 A+ Q# f+ s$ C1 h/ N+ P修改Pulse为30;则占空比Duty=30/(199+1)=15%1 g7 y. S1 ~& q. `# J# i6 T0 ^1 y

/ ~+ G3 u  W2 H7 N4 S, r
  1. /* USER CODE BEGIN 2 */
    / _# \, P0 Y- o0 m5 [* t( B) U
  2. HAL_TIM_PWM_Start(&htim14,TIM_CHANNEL_1);     //输出PWM3 c( R6 U7 z0 K8 P1 o
  3. /* USER CODE END 2 */
复制代码
4 c/ U6 s8 U) `3 Q, b
在main()函数中添加PWM输出代码,即可产生频率为5kHz,占空比为15%的PWM
' _, x, n; k1 J, [, w3 {2 H示波器观察( p& G+ x6 I8 R) `& p6 Z

( o) o$ g" F+ g/ D, e8 M
20190731092339387.png

* \2 [& K+ i& O+ D; T1 U3 H0 E
若如下修改Pulse的值,则生成占空比为30%的PWM
+ x2 {# }; H% J( g0 l/ ~
( j' U  A+ _4 V, A8 G9 o1 {
20190731092515144.png
! ]$ @% H! n. O5 h
" m; a& C/ R, f  X
示波器观察
* e& z1 {: Y$ _& h! ], Q0 s, J: Z2 O% S# A# {8 N4 r
20190731092644843.png

, |9 v2 O: a: I* T! z
7 {- \" W' O$ f1 I# L0 z$ `同样,若定义变量n' G* K# y$ Q' o- {) W8 J+ ~
main.c中' l5 l0 `2 |8 p$ D' w) |
  1. /* USER CODE BEGIN 0 */
    ! X1 o8 w$ Z/ p# Q! f
  2. extern uint16_t n;- a) B8 V' x$ M2 @4 U+ D7 l
  3. /* USER CODE END 0 */
复制代码

3 D7 q7 q) U* G5 W5 Z9 ]7 e/ o; Itim.c中, j; s: M# m4 X# b$ B" j6 U* e: w9 a
  1. /* USER CODE BEGIN 0 */
    " J! e- e) P( f# r
  2. uint16_t n;
      J7 y& i3 y! d' h
  3. /* USER CODE END 0 */
复制代码
Pulse的修改2 i8 O+ C4 I) p/ Z
' |" x( `6 q& [) h6 c) M1 h+ L4 X" I
  1. sConfigOC.Pulse = n*htim14.Init.Period/100;
复制代码
则n为多少,占空比即为多少(n%)。这样使占空比的变化和Period脱离开,不受Period的影响,可以独立改变。
$ q% w( X: w" |2 A) ^9 l# [( H& Q/ U4 o: R4 R  Q

0 [# G# ?( R! x: e) p8 ^
20190731091534976.png
收藏 评论0 发布时间:2021-11-23 20:45

举报

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