定时器PWM波实验 实验说明 芯片:STM32F103RCT6 6 e# @! T# y/ B3 A( r1 }' ?, d 实验内容:使用定时器2的通道1输出PWM波控制LED灯的亮度。 / `' D3 \0 t& n- X0 t2 z/ @" v 实验操作9 [ n9 s9 m! P8 O8 F( D5 f2 _ 1、基础配置# F8 Z$ k5 _' d, D( @6 Y 1)sys中,选好调试方式,例如jtag-4pin。! t7 N4 r6 S3 f: D1 G; B( n+ ` 2)RCC时钟,晶振选择。: y. f# R3 i; k& K% T 4 L% W* \ `" s% ]3 M2 d9 @0 P7 b$ h, Y 3)时钟树配置。# H" A+ O8 ~8 y$ ?3 [ 4 p5 a2 S: d, }4 u5 ~8 e 4)中断分组配置。+ j+ L' c( T9 Z & }& y" B/ z- G 以上步骤可以参考之前的实验。2 O% u, i; i4 o6 ^2 ? 2、外设配置—PWM波配置+ m1 w" N5 N# x7 e- R& |+ ^ 本次实验使用的是TIM2的通道1来输出PWM波。 1) 如下图打开TIM2功能配置视图。( A7 h$ R3 D* f3 d6 {( ]* `0 L& N7 u, U ' h0 |) I! k6 R5 ^/ Z; m5 F 2)选择时钟,并且选择通道1的PWM模式。$ c, D, y: l! Q7 {% d 0 X' u4 c1 I# X, t 注意载芯片示意图上 会看到下图 PA0 就是TIM2 的通道1 PWM波输出口。 $ |: {( }/ z' X! V/ U9 ~8 f 3)配置PWM波的参数0 [5 g6 b, T1 q S/ l( } 上图中需要理解两个点, ! z' B! F/ h# I7 Y1 [( | PWM 的频率 : 6 k8 a5 m( ?' B5 s l$ k4 D PWM模式和极性: PWM模式1,在向上计数时,一旦TIMx_CNT < TIMx_CCR1(就是上图中的6,计数比较值)。时通道1为有效电平,否则为无效电平;在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为无效电平(OC1REF=0),否则为有效电平(OC1REF=1)。& x' \5 Z# j9 g- }. x5 ]( I , k3 i0 k2 w) m: d PWM模式2- 在向上计数时,一旦TIMx_CNT < TIMx_CCR1时通道1为无效电平,否则为有效电平;在向下计数时,一旦TIMx_CNT > TIMx_CCR1时通道1为有效电平,否则为无效电平 ! c; Q6 G! F& e# D s8 V 输出比较极性的指的是你在比较匹配之后输出口输出的极性。 这个函数就是让你设置有效极性,也就是设置比较输出的有效电平。你可以设置为高电平有效或者低电平有效。如果设置为高电平有效,那么当定时器比较匹配之后,输出口输出高电平,否则就反一下。 这里我自己的理解是,如果是PWM模式1,且向上计数,如果极性设置为低,那么 TIMx_CNT < TIMx_CCR1 时,输出低电平,更简单就是占空比为1 – TIMx_CCR1/(ARR+1). 如果极性为高,占空比就是TIMx_CCR1/(ARR+1)、! G! r; }9 c( R( W : L" M0 N6 Y8 { 3 生成代码 由于这里不用中断,所以不用配置中断优先级。所以写好工程的名字和路径后,直接生成代码即可。 ; M/ B) {' l8 s4 u& v1 @ 4 在工程中开启PWM$ K+ a( @( y0 S2 `8 A9 o; J 在完成以上设置之后,我们需要使能 TIM2 并且使能 TIM2_CH1 输出。在 HAL 库中,函数 HAL_TIM_PWM_Start 可以用来实现这两个功能,函数声明如下:2 Q1 A& C5 i2 t( u, B1 p V, q
该函数第二个入口参数 Channel 是用来设置要使能的通道号。 ( J1 l3 F" F2 S: _6 t 5 修改占空比 推荐使用寄存器的方式
6 测试0 z. Z, D5 P' c0 O: P5 `. p" { 下载程序,然后可以使用万用表测试PA0口的电压值,为0.54~0.55V 6 c4 g) l8 {# l5 { (PWM模式1,极性为高 所以占空比为 150/900 * 3.3 为0.55V。 |
【经验分享】STM32 GPIO模拟I2C程序示例
基于STM32生成外部Flash Loader的方法经验分享
【经验分享】STM32驱动RC522读卡完整资料分享,包含原理图、PCB、驱动工程文件
【经验分享】HRTIMER 产生多相相移信号
基于STM32 DFSDM应用技术经验分享
基于STM32 快速入门 BlueNRG SDK 固件开发
基于STM32的BlueNRG 系列协处理器简介经验分享
获取编译时间作为版本号
【经验分享】STM32CubeIDE使用说明 —— 实时调试
宽禁带技术如何带来颠覆性变革