历史上的今天
今天是:2025年08月17日(星期日)
2018年08月17日 | STM32 通用定时器的一些概念解析
2018-08-17 来源:eefocus
STM32一共有8个定时器,其中定TIM1和TIM8为高级控制定时器,除了具有通用定时器的功能外,还兼具控制功能,不仅能够输出PWM还可以采集编码器,驱动各种电机的功能。而基本定时器TIM6和TIM7一般不用作普通定时器,一般会给别的定时器提供基准时钟信号。
对于通用定时器TIM2~TIM5,基本的功能就不描述了,主要是看这些通用定时器如何使用:
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_DeInit(TIM2); //重新将Timer设置为缺省值
TIM_InternalClockConfig(TIM2); //采用内部时钟给TIM2提供时钟源
TIM_TimeBaseStructure.TIM_Prescaler = 36000 - 1; //预分频系数为36000-1,这样计数器时钟为72MHz/36000 = 2kHz
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //设置计数器模式为向上计数模式
TIM_TimeBaseStructure.TIM_Period = 2000 - 1; //设置计数溢出大小,每计2000个数就产生一个更新事件
TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure); //将配置应用到TIM2中
TIM_ClearFlag(TIM2, TIM_FLAG_Update); //清除溢出中断标志
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE); //开启TIM2的中断
这里要分析一下几个概念,也是理解定时器的功能的核心概念,通用定时器有些类似于操作系统的定时器节拍,可以在定时器采用的时钟源的基础上再进行分频,然后再设定溢出大小,进而实现定时的功能,当然自动重载功能更不再话下。
预分频的功能是使定时器在APB时钟的基础上再一次分频,使其独立的运行。就像上述代码中举例,预分频系数设定为36000-1,则表示该定时器的 时钟频率就变成了72MHz/36000 = 2KHz,而“计数溢出大小”可以理解为自动装载数值,表示每隔x个计数溢出一次,可以产生1次中断,当然这个频率是经过预分频后的频率。
所以从上述的分析可知,定时器的定时时间计算为:
Tout = (TIM_Period+1)*(TIM_Prescaler+1)/72000000
在本程序案例中:Tout= 2000*36000/72000000=1s
需要注意的是,公式中的72000000的使用,是因为该定时器采用的时钟源为72MHz,如果配置成别的时钟源,则相应公式也应该改变。
另外TIM_ClockDivision为时钟分割,这个简单的讲,就是定时器的数字滤波功能,设置成默认即可。
下一篇:STM32 SPI时钟问题
史海拾趣
|
This series of articles continues with an in-depth discussion of the classic Wilkinson divider, presenting typical methods of implementation, plus alternative methods that address specific problems … 查看全部问答> |
|
最近使用benq的m23,发现可以使用at$simtest来检测SIM卡是否已接入,返回1代表检测到,返回0代表没有检测到sim卡。现在我要使用TR800,可是没看到那个at$simtest指令,不知道它怎么检测sim卡插入了呢?还有其他模块怎么检测sim卡啊? 另外共享一下 ...… 查看全部问答> |
|
[hanker M4开发板试用]我的助手,我的虚拟串口 ——stellaris USB CDC应用 最后的试用期限就要到了。这两天也抓紧调试了USB库函数。在eeworld论坛上,小川 版主的帖子陪我走过这一周。现在将本周调试的虚拟串口程序与网友们分享。 摘要 本文首先简要介绍了Stellaris USB库的基本使用,在USB库函数下编写了虚拟串口程 ...… 查看全部问答> |
|
电源架构当然是要选择Power Architecture设计电源方案首先选择输入电源,和输出负载所需的电压和电流,可以添加多个电源和对应每个电源有多个负载 我这里就只用一个电源,一个负载来展示。 配置完参数后,提交所有的参数需求,让Webench后台选择 ...… 查看全部问答> |




