打印

定时器的最大定时长度是多少呢?

[复制链接]
4494|23
手机看帖
扫描二维码
随时随地手机跟帖
沙发
number9| | 2015-9-9 15:49 | 只看该作者
由定时器的分频,主频,以及几位的定时器决定的

使用特权

评论回复
板凳
低八度的声线| | 2015-9-11 09:39 | 只看该作者
假设 系统时钟是72Mhz,TIM1 是由PCLK2 (72MHz)得到,TIM2-7是由 PCLK1 得到
关键是设定 时钟预分频数,自动重装载寄存器周期的值

使用特权

评论回复
地板
deliciouscook| | 2015-9-12 08:31 | 只看该作者
网上找到的详细算法

/*每1秒发生一次更新事件(进入中断服务程序)。RCC_Configuration()的SystemInit()的
RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2表明TIM3CLK为72MHz。因此,每次进入中
断服务程序间隔时间为
((1+TIM_Prescaler )/72M)*(1+TIM_Period )=((1+7199)/72M)*(1+9999)=1秒 */
定时器的基本设置
   1、   TIM_TimeBaseStructure.TIM_Prescaler = 7199;//时钟预分频数   例如 :时
钟频率=72/(时钟预分频+1)  
   2、TIM_TimeBaseStructure.TIM_Period = 9999; // 自动重装载寄存器周期的值(定时
时间)     累计 0xFFFF个频率后产生个更新或者中断(也是说定时时间到)
   3、  TIM_TimeBaseStructure.TIM_CounterMode =  TIM1_CounterMode_Up; //定时器
模式  向上计数  
     
     4、 TIM_TimeBaseStructure.TIM_ClockDivision = 0x0; //时间分割值  
     5、 TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);//初始化定时器2
     6、 TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);  //打开中断   溢出中断  
     7、 TIM_Cmd(TIM2, ENABLE);//打开定时器

或者:
TIM_TimeBaseStructure.TIM_Prescaler = 35999;//分频35999      72M/
(35999+1)/2=1Hz  1秒中断溢出一次
TIM_TimeBaseStructure.TIM_Period = 2000; //计数值2000

((1+TIM_Prescaler )/72M)*(1+TIM_Period )=((1+35999)/72M)*(1+2000)=1秒 */  

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
单片机菜菜 + 1
5
月正浓| | 2015-9-13 15:34 | 只看该作者
最大可以达到16ms多,我指的是一次定时器的长度

使用特权

评论回复
6
黑夜的风| | 2015-9-14 16:28 | 只看该作者
可以看看这个图

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
王大熊 + 3
7
王大熊| | 2015-9-18 08:51 | 只看该作者

赞一个,这幅图很不错,收藏了

使用特权

评论回复
8
单片机菜菜|  楼主 | 2015-9-29 14:02 | 只看该作者
number9 发表于 2015-9-9 15:49
由定时器的分频,主频,以及几位的定时器决定的

具体是不是应该有个公式呢?

使用特权

评论回复
9
comeon201208| | 2015-10-7 19:13 | 只看该作者

这个表是很关键的,不过有基本的计算算法的。

使用特权

评论回复
10
angerbird| | 2015-10-7 20:43 | 只看该作者
deliciouscook 发表于 2015-9-12 08:31
网上找到的详细算法

/*每1秒发生一次更新事件(进入中断服务程序)。RCC_Configuration()的SystemInit()的

这是跟主频率相关系的。

使用特权

评论回复
11
smilingangel| | 2015-10-7 21:28 | 只看该作者
这个主要取决于时钟源的配置的

使用特权

评论回复
12
baimiaocun2015| | 2015-10-11 20:32 | 只看该作者

这个表格就是根据不同的主频率计算的参数的。

使用特权

评论回复
13
tongbu2015| | 2015-10-15 21:37 | 只看该作者

这个就跟定期其所选用的时钟源相关系的,,最多计数65536

使用特权

评论回复
14
zhangbo1985| | 2015-10-16 19:43 | 只看该作者
这个就是依据于其主频跟定时器采用的频率的。

使用特权

评论回复
15
deliciouscook| | 2015-10-25 10:56 | 只看该作者
angerbird 发表于 2015-10-7 20:43
这是跟主频率相关系的。

确实,首先要配置主频率

使用特权

评论回复
16
number9| | 2015-10-25 11:13 | 只看该作者
单片机菜菜 发表于 2015-9-29 14:02
具体是不是应该有个公式呢?

是有个公式的,你可以看看数据手册去。

使用特权

评论回复
17
黑夜的风| | 2015-10-27 19:19 | 只看该作者
王大熊 发表于 2015-9-18 08:51
赞一个,这幅图很不错,收藏了

我从一个大侠的博客找的,对我学习定时器很有用的。

使用特权

评论回复
18
黑夜的风| | 2015-10-27 19:26 | 只看该作者
comeon201208 发表于 2015-10-7 19:13
这个表是很关键的,不过有基本的计算算法的。

是的,我从数据手册中找到这个公式了。

使用特权

评论回复
19
单片机菜菜|  楼主 | 2015-10-31 09:48 | 只看该作者
number9 发表于 2015-9-9 15:49
由定时器的分频,主频,以及几位的定时器决定的

有个公式么?

使用特权

评论回复
20
单片机菜菜|  楼主 | 2015-10-31 09:51 | 只看该作者
deliciouscook 发表于 2015-9-12 08:31
网上找到的详细算法

/*每1秒发生一次更新事件(进入中断服务程序)。RCC_Configuration()的SystemInit()的

谢谢,这个公式很详细!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

170

帖子

0

粉丝