STMCU小助手
发布时间:2022-5-15 14:51
|
定时器PWM波实验1 [8 D$ s+ t! k! e 实验说明7 }( T* @& ?0 Z 芯片:STM32F103RCT6: e( T8 t6 E! y7 c& ` 实验内容:使用定时器2的通道1输出PWM波控制LED灯的亮度。9 x5 Q1 B2 V8 J( X. H9 I3 G 实验操作7 {* I; h% ?! \3 `" E* O1 s) p 1、基础配置 1)sys中,选好调试方式,例如jtag-4pin。 3 ^; _) Q1 b8 p+ ?0 m 2)RCC时钟,晶振选择。! u6 e% D D. R; c+ n" h' ] 3)时钟树配置。5 A; W- F! C4 U& a I. ]3 b 7 ]; Q2 r9 s9 y. P5 {0 P 4)中断分组配置。8 O/ D1 f1 c' i) |8 s5 |6 n" v 以上步骤可以参考之前的实验。' x2 c$ x, p7 T* w- c4 s8 y9 g8 f! q 2、外设配置—PWM波配置+ @1 G1 W+ y; l( h; s* W+ ~ 本次实验使用的是TIM2的通道1来输出PWM波。/ w |4 M2 C$ H/ j3 r $ C0 V Q, i7 \: D 1) 如下图打开TIM2功能配置视图。
/ o& T- d$ D A9 N( T7 ~ R 2)选择时钟,并且选择通道1的PWM模式。3 q, i* k* L% E' @% G0 |# c {1 n& W! |* a9 h; `
9 i3 C8 f6 G" o) l8 N# s' F/ x 注意载芯片示意图上 会看到下图 PA0 就是TIM2 的通道1 PWM波输出口。
3)配置PWM波的参数7 v/ d4 ^4 y; D& ?
上图中需要理解两个点, PWM 的频率 :
PWM模式和极性:( @3 ^. Y; Q8 O2 E6 {- ` PWM模式1,在向上计数时,一旦TIMx_CNT < TIMx_CCR1(就是上图中的6,计数比较值)。时通道1为有效电平,否则为无效电平;在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为无效电平(OC1REF=0),否则为有效电平(OC1REF=1)。; W2 s s" J# o4 B 1 T! U4 o; E { PWM模式2- 在向上计数时,一旦TIMx_CNT < TIMx_CCR1时通道1为无效电平,否则为有效电平;在向下计数时,一旦TIMx_CNT > TIMx_CCR1时通道1为有效电平,否则为无效电平( p7 l2 J7 V% x) G4 z % ?6 d. D+ H2 o2 p6 _! a 输出比较极性的指的是你在比较匹配之后输出口输出的极性。 这个函数就是让你设置有效极性,也就是设置比较输出的有效电平。你可以设置为高电平有效或者低电平有效。如果设置为高电平有效,那么当定时器比较匹配之后,输出口输出高电平,否则就反一下。* f" w! K8 _9 }( l 这里我自己的理解是,如果是PWM模式1,且向上计数,如果极性设置为低,那么 TIMx_CNT < TIMx_CCR1 时,输出低电平,更简单就是占空比为1 – TIMx_CCR1/(ARR+1). 如果极性为高,占空比就是TIMx_CCR1/(ARR+1)、 3 生成代码 由于这里不用中断,所以不用配置中断优先级。所以写好工程的名字和路径后,直接生成代码即可。 4 在工程中开启PWM 在完成以上设置之后,我们需要使能 TIM2 并且使能 TIM2_CH1 输出。在 HAL 库中,函数 HAL_TIM_PWM_Start 可以用来实现这两个功能,函数声明如下: - z9 a# \! J/ O% _
该函数第二个入口参数 Channel 是用来设置要使能的通道号。- @, j4 f' _; v4 B7 h j' @; T
5 修改占空比7 }( X0 k. x) A2 ~3 `3 B% \ 推荐使用寄存器的方式1 I& |- [, n- C! J% Q5 ?4 E
6 测试" i( Z* i# O' y8 d 下载程序,然后可以使用万用表测试PA0口的电压值,为0.54~0.55V K4 X& C( j A" S( o1 ~( k; C 2 C5 c3 h: C$ y
: G" d8 n$ T' O: U) |; Z+ Q# g (PWM模式1,极性为高 所以占空比为 150/900 * 3.3 为0.55V。- U( ~6 [' v" C# x* o r" t 8 _' b! \# N1 k; G6 K s0 N2 N5 b1 w0 \8 p |
想找个ST芯片
[GPIO] 使用新型抽象开始C++嵌入式编程,从GPIO开始
技术手册stm32f1xx中的一个小问题
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
OpenSTLinux 6.1发布:M33-TD加持+安全升级,STM32MPU开发效率翻倍!
微信公众号
手机版