STMCU小助手
发布时间:2022-5-15 14:51
|
定时器PWM波实验) S# z: L, e! L/ ?- c 实验说明2 z, z7 q& I. Q# ?) T 芯片:STM32F103RCT6 实验内容:使用定时器2的通道1输出PWM波控制LED灯的亮度。 " ]# B# e5 E, K8 Y: Y$ j# p$ ^ 实验操作) Z9 a Y9 C1 W# f+ p2 D 1、基础配置 1)sys中,选好调试方式,例如jtag-4pin。 1 P) h z1 \7 D, f8 X 2)RCC时钟,晶振选择。 ( p X4 o! p( h2 N& p/ l/ Q3 Y 3)时钟树配置。2 G4 f/ F: V! ~! y: N( K, h* k * p" }' u! P- I 4)中断分组配置。 D+ ~1 s1 q2 p. h0 v4 b 以上步骤可以参考之前的实验。 2、外设配置—PWM波配置" Q: {4 v p3 c; m 本次实验使用的是TIM2的通道1来输出PWM波。 ( |. _! S ]/ ?4 k9 x 1) 如下图打开TIM2功能配置视图。3 S9 H& D, @% w
: S9 [7 _5 o6 r; G9 R7 F; } 2)选择时钟,并且选择通道1的PWM模式。 & V1 I8 g/ l( X9 E3 N$ o
+ n2 H; K; \/ |/ x) a1 m
注意载芯片示意图上 会看到下图 PA0 就是TIM2 的通道1 PWM波输出口。7 W+ T8 |( M& ]( g; I
2 D; @& _; B" q2 w$ W5 {; O 3)配置PWM波的参数
上图中需要理解两个点, PWM 的频率 :' e* r) \, C( @0 E2 a& _! |3 f 6 \8 x# {$ A8 [! u( |5 I- Y
& h: z: X" W0 b# o. X8 X" Z PWM模式和极性: PWM模式1,在向上计数时,一旦TIMx_CNT < TIMx_CCR1(就是上图中的6,计数比较值)。时通道1为有效电平,否则为无效电平;在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为无效电平(OC1REF=0),否则为有效电平(OC1REF=1)。6 o8 B6 R$ D8 z5 w2 Z6 @ 4 Z2 I9 N* |% y9 i6 c4 `( _6 k PWM模式2- 在向上计数时,一旦TIMx_CNT < TIMx_CCR1时通道1为无效电平,否则为有效电平;在向下计数时,一旦TIMx_CNT > TIMx_CCR1时通道1为有效电平,否则为无效电平, s) m. V( c3 C* z+ }* D* s 1 c8 S2 E+ m2 [ 输出比较极性的指的是你在比较匹配之后输出口输出的极性。 这个函数就是让你设置有效极性,也就是设置比较输出的有效电平。你可以设置为高电平有效或者低电平有效。如果设置为高电平有效,那么当定时器比较匹配之后,输出口输出高电平,否则就反一下。- H: \. T6 M# h% m4 j! O* U 这里我自己的理解是,如果是PWM模式1,且向上计数,如果极性设置为低,那么 TIMx_CNT < TIMx_CCR1 时,输出低电平,更简单就是占空比为1 – TIMx_CCR1/(ARR+1). 如果极性为高,占空比就是TIMx_CCR1/(ARR+1)、 3 生成代码 由于这里不用中断,所以不用配置中断优先级。所以写好工程的名字和路径后,直接生成代码即可。 ( C9 b" D. z8 J 4 在工程中开启PWM& C/ A* r2 u: Z# V 在完成以上设置之后,我们需要使能 TIM2 并且使能 TIM2_CH1 输出。在 HAL 库中,函数 HAL_TIM_PWM_Start 可以用来实现这两个功能,函数声明如下:/ K2 H' ^; H+ M9 Q" | / u; A) p) v( R9 G3 s6 [
该函数第二个入口参数 Channel 是用来设置要使能的通道号。% y! m8 E* k9 d) Y 7 }! o/ ?! @4 M. G3 I# I" z$ L
( L* U* x# O# j3 W. U% O) p4 H 5 修改占空比1 [" N1 Y, q! v8 q- \ 推荐使用寄存器的方式2 Y5 x' J% k# F l: L0 Z3 P8 U' Q * J5 U. L" M, r+ D$ j
6 测试 下载程序,然后可以使用万用表测试PA0口的电压值,为0.54~0.55V4 ?5 ^3 s; k) U1 y
2 I/ f) j3 f* `6 l3 j8 p (PWM模式1,极性为高 所以占空比为 150/900 * 3.3 为0.55V。 $ D4 i9 v2 C# n M( g6 Y$ ?" r |
【经验分享】STM32语音识别的智能蓝牙音箱(源程序+原理图+PCB+设计说明书+PPT)
想找个ST芯片
[GPIO] 使用新型抽象开始C++嵌入式编程,从GPIO开始
技术手册stm32f1xx中的一个小问题
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
微信公众号
手机版