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

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

[复制链接]
STMCU小助手 发布时间:2021-11-23 20:45
平台:' X% f! E5 i" K' [5 S
+ p" Z, V6 c, r( W& w
20190731090150291.png

9 |" U9 e/ w6 \. |$ |) D7 v1 y! M. V' T
CubeMX配置:
* P# o& l) r' _: k% h( ~$ t: X1、RCC* z0 Z0 }' U- m* Z7 {( N
20190731090344124.png

4 U; U  \, j8 E$ O- f8 Z+ Q
! z$ I* I% R9 \2、TIM14配置
$ D5 x+ [" D/ D( t5 n6 R) G* t( n6 v% Q& w: Q( h* y+ v% `
2019073109045036.png
: I* [, V; W: V' o7 U1 C
20190731091304623.png
. D- c( ?" J2 r5 f# |! t
20190731090614494.png

; Q; ]+ `1 {; g5 ~) K$ Z  {9 A5 F; i# K( z
Prescaler和Period决定PWM的频率, f=48M/(Pre+1)/(Priod+1)5 M- |) o; i  @4 e1 X
Pulse决定PWM的占空比' Q$ z9 o4 y) C. j# k( v
占空比Duty=Pulse/(Period+1);
/ \" U- B, |8 q  P
$ Z& S9 @( t' e9 G# N1 j4 Y6 a2 `* Q% ]生成代码
3 `! W: h+ o" q$ R8 m8 O1、tim.c
/ B9 r4 p) J: ?3 i. {8 Y% m6 X; p/ w
2019073109173988.png
. P$ n. k  r( v. j

: u& C* n' v: _修改Pulse为30;则占空比Duty=30/(199+1)=15%
/ s0 ^$ }  D! x2 w3 n
: k# W4 y! w% x# q7 ~
  1. /* USER CODE BEGIN 2 */
    $ |; X2 `0 w# z4 W7 ]1 u
  2. HAL_TIM_PWM_Start(&htim14,TIM_CHANNEL_1);     //输出PWM6 o. q2 |& f  a, M
  3. /* USER CODE END 2 */
复制代码

3 S1 m5 G$ r  n1 P在main()函数中添加PWM输出代码,即可产生频率为5kHz,占空比为15%的PWM
) g9 y% F4 m) I# h$ |" F示波器观察! L7 x4 u6 @1 p% {( L9 E

) D9 H4 n2 D( t8 u; I; O
20190731092339387.png
- D0 G' Z8 `1 Z# I( K

5 [# c$ v/ ?$ X; A, k若如下修改Pulse的值,则生成占空比为30%的PWM5 T! y6 K- G% T4 `! J/ w
8 a0 ?; R& t4 |6 b, _& ^3 J
20190731092515144.png

+ O% n4 n: ]( `) ~0 q' {1 s
# H6 c7 W3 i) r' z0 Y! M示波器观察
* E+ ?# D5 U) r& S
. ^% `8 S7 I; U. m
20190731092644843.png

9 P- g$ r9 f$ q6 }
* r. F1 i7 H# K' e$ l2 Y同样,若定义变量n, d9 I1 P* _9 `2 o
main.c中
$ t! ]" d  R. ]! s7 M5 |
  1. /* USER CODE BEGIN 0 */
    # T4 L5 d( @) S
  2. extern uint16_t n;
    4 a5 h  q8 _6 x/ `* J% j  A* ]
  3. /* USER CODE END 0 */
复制代码

: t6 F6 \/ ^9 q9 ttim.c中
" u. X& X) v: V
  1. /* USER CODE BEGIN 0 */
    & A" T+ F- \/ s' e" c, X7 {
  2. uint16_t n;" B7 M* f# U$ N; a
  3. /* USER CODE END 0 */
复制代码
Pulse的修改& n3 V/ H! S4 S" `. |9 G

9 z- ], @- z$ |5 d0 h
  1. sConfigOC.Pulse = n*htim14.Init.Period/100;
复制代码
则n为多少,占空比即为多少(n%)。这样使占空比的变化和Period脱离开,不受Period的影响,可以独立改变。
! z) S5 D1 G% u& V( f7 ]
! n+ |- c4 o5 K( e! n, W
1 U8 X5 i( T% r8 U" z1 s
20190731091534976.png
收藏 评论0 发布时间:2021-11-23 20:45

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版