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

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

【经验分享】STM32F7学习笔记(六)-PWM

[复制链接]
STMCU小助手 发布时间:2021-12-10 11:03
一、打开cubemx
+ k+ o8 [! w; s* N4 GLED0和LED1连接在PB0和PB1上,刚好是TIM3的PWM通道3和通道4
0 W! P7 W2 t2 a' z3 ^- B. b
. n+ l. l, b4 V: B' n% V3 [5 E二、配置PWM参数
( p$ O& V. _' `2 _) j/ d! V  Z开启TIM3的通道3和通道4- }+ g) T6 ]" x, m
+ l  W$ I; i' D( A6 Q4 q! f
20190411191426790.png

( U2 L* d9 d8 l7 I8 H+ G3 d- j/ S9 }" j* `1 f
配置PWM的频率为108000000/(108*500)=20kHZ4 ^3 ^1 F: V6 ^( N4 n

6 g$ ~0 ~, n$ T; J/ y! I
2019041119164611.png
! I- R& ?4 x3 s& T2 H. P% F
" O8 @8 q# M5 o1 a! S5 O
配置PWM通道3和通道4
$ w/ {  Z, J2 N6 X# b$ T
+ s9 L7 t3 B1 @5 @% l0 ^
20190411191722584.png

5 S- u$ }: G; G5 Z. B
4 F: @8 C4 A" e4 O在程序中改变pulse的值,即可改变占空比pulse的取值范围在0-count period之间
  W( }. d8 B- \: n2 W4 f7 j1 v' `  f* M
三、生成代码
( P" x5 W8 C9 \, X$ P在main函数中增加代码,开启PWM输出
& Q, p/ W3 l( D+ N. {' O9 k9 t$ e. c2 O4 u$ S4 m6 p" @
20190411192042209.png
0 T7 z: }' W) ?, a* ?- Q& c

3 a* }- N' U8 W* X+ Z+ h) T. U在tim.c中增加pwm控制函数
5 @6 u6 a2 q! D8 Z, Y2 Q& Z  ~
) m( q0 A* U7 |+ G, _' {$ N! z
  1. void SetPwm(uint16_t pwm1,uint16_t pwm2)
    1 I# l  }: ?% l5 }; S4 ]. B* y
  2. {
    . l1 B. m$ v. X* }$ i5 d
  3.     TIM3->CCR3=pwm1;+ d- A7 b  o  ]' t7 ?, ?
  4.     TIM3->CCR4=pwm2;
    ( \7 q6 }2 X/ P' v2 G' h
  5. }
复制代码

" M8 h1 {/ @0 }' H2 }/ t; f. j  O也可以使用hal库进行修改,但这样比较复杂& G5 ?0 I! s( L  E, v2 ~

: _3 W8 F" l+ U! w
  1. void SetPwm(uint16_t pwm1,uint16_t pwm2)6 S2 o" V) J3 {# m* A2 V$ C% X
  2. {
    * l. f/ O# ~3 |
  3.                 TIM_OC_InitTypeDef sConfigOC;
    ; x7 s/ R- ]' i& z" a
  4.             sConfigOC.Pulse = pwm1;
    . H! O& F/ u) u9 T- y
  5.             HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_3);
    - Q- }  t; T$ V7 ?0 i% K- V* O; q
  6.             HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3);  0 [+ T; d+ `8 m8 j$ m( H, g
  7.                  sConfigOC.Pulse = pwm2;. h7 ]2 q/ P; E& r" Y' |" f& `  f
  8.             HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_4);
    $ I1 C0 S. M1 o
  9.             HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_4);  
    , O$ r. T4 I6 a5 V1 l4 I
  10. }
复制代码

9 p* G! h' @3 B在主函数添加呼吸灯代码,添加完成如下: o/ S- b; x1 @5 k

& q9 Y  B& Y0 f# \6 Q
20190411192840194.png
; m! f  T0 o& r: \5 T9 T9 z
9 m2 |9 ^- P; E& Z2 y
四、下载代码观看现象& C8 t/ ^. S% ~/ p: U
将代码下载到开发板中可以看到LED0和LED1呈现出呼吸灯的效果; n! t6 N' z# I2 J* g- p( R: z

7 m" a3 H: Y. Y$ c9 G4 k
0 O- ^& w" c& P( ?3 R$ I
收藏 评论0 发布时间:2021-12-10 11:03

举报

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