微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STM32通用定时器(时钟选择,模式选择)

STM32通用定时器(时钟选择,模式选择)

时间:11-28 来源:互联网 点击:

发、门控。通过SMCR选择后可以进入这三种从模式

SMCR

1514131211 109876543210

ETP

ECE

ETPS[1:0]

ETF[3:0]

MSM

TS[2:0]

SMS[2:0]

SMS: 100101110

复位门控触发

所谓从模式简单理解就是受控于别人了,包括何时启动、何时停止、何时复位。相关作用请看手册。提示一点就是进入这三种模式后时钟是谁的问题?肯定不是外部时钟1了,可以是内部时钟和外部时钟2.

接着看实验,PWM方式的原理是这样的,如前文提到过输入时可以把T1映射到CC1上去同时映射到CC2上,将CC1和CC2的捕获边沿搞成相反的,比如CC1捕获T1上升沿,CC2捕获T1下降沿,还要再设置T1为复位从模式,上升沿有效,这样T1上升沿后计数器开始计数。下降沿CC2捕获发生,此为PWM占空比,在来一个上升沿,CC1捕获发生此为PWM周期。注意CC1捕获的第一次无效。

这是从模式跟输入捕获的一种组合使用,从模式还可以跟输出比较组合使用。比如手册上的单脉冲实验。

接着做4个实验跟定时器的级联和定时器同步有关系,在实验前先得说说主模式的问题。在CR2寄存器中的MMS位决定了定时器的主模式方式,即决定TRGO.几种方式可以参看手册。要说明一点就是一个定期器既可以是主模式同时它也是从模式,这就好像你是一个中层干部一样,既可以领导别人同时又被别人领导,这个不冲突的。

简单介绍下4个实验。

实验8

TIMER-8:TIMER2作为TIMER3的分频器.

现象:LED以10秒周期闪烁。

TIMER3配置为PWM输出,但是始终有TIMER2的溢出时间频率来提供,其溢出频率为100Hz所以TIMER3 PWM的周期为10S.

实验9

TIMER-9:TIMER2来使能TIMER3.

现象:LD1前15秒以1秒的周期闪烁,后15秒熄掉,然后下个15秒再闪烁如此循环。

在这个实验里TIEMR3输出一个周期1秒的PWM波,仍然驱动LD1闪烁。同时从模式配成门控模式,TIEMR2将OC1作为TRGO,OC1是一个周期30S占空比50%的PWM波。

实验10

TIMER-10:IMER2启动TIMER3

现象:上电后延迟15秒LD1以1秒的周期闪烁。

此实验跟上个实验配置差不多只要把TIMER3有门控改为触发方式即可。

实验11

TIMER-11:TIMER4的通道1同时出发TIMER4和TIMER3两个定时器

现象:按下JOYSTICK 的“选择”键同时出发两个定时器开始。同时TIMER3驱动LD1以1秒周期闪烁。

以上4个实验实际上是主模式和从模式的组合以及主模式和外部时钟1的组合。其实根据自己的需要还可以做出多种组合,这就是STM32定时器强大的地方。

最后多熟悉下库函数,关于TIM的库(2.0版本),本人认为有两点错误:

1、TIM.C中CR1_CounterMode_Mask 的值为0x039F应该改为0x038F这样才能覆盖CR1的DIR位。

2、TIM.C中TIM_PrescalerConfig函数原文

if (TIM_PSCReloadMode == TIM_PSCReloadMode_Immediate)

{

TIMx->EGR |= TIM_EventSource_Update;

}

else

{

TIMx->EGR &= TIM_EventSource_Update;

}

红色的这句好像不对吧?应该TIMx->EGR &=~ TIM_EventSource_Update;才对吧。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top