OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10705|回复: 2

关于定时器的问题,请教

[复制链接]

12

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2011-4-12
在线时间
0 小时
发表于 2011-5-8 10:59:22 | 显示全部楼层 |阅读模式
     Stm32_Clock_Init 函数里把APB1 的分频设置为2 了,所以我们的TIM3 时钟就是APB1 时钟的2 倍,等于系统时钟。(系统时钟是不是72M???)


因为我们在Stm32_Clock_Init 函数里面已经初
始化APB1 的时钟为2 分频,所以,TIM3 的时钟为36M,再根据我们设计的arr 和psc 的值,
就可以计算中断时间了。计算公式如下:
Tout= (arr*(psc+1))/Tclk;

3.7定时器例程 上设置Timerx_Init(5000,7199);//10Khz 的计数频率,计数到5000 为500ms

Tout=(5000*(7199+1))/Tclk 这个Tclk是不是上面说的 TIM3 的时钟为36M?如果是的话 算出来的TOUT是1000ms。是不是这里不对啊??


没有共产党,就没有新中国。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2011-5-8 11:33:52 | 显示全部楼层
回复【楼主位】nuoya299:
-------------------------------
系统时钟多少M都还没搞清楚啊?
是72M的.
PLL9倍,外部晶振8M,8*9=72M.

这里确实有问题,修改如下:
Timerx_Init函数就是执行我们上面介绍的那5个步骤,使得TIM3开始工作,并开启中断。该函数的2个参数用来设置TIM3的溢出时间。因为我们在Stm32_Clock_Init函数里面已经初始化APB1的时钟为2分频,所以APB1的时钟为36M,而从STM32的内部时钟树图(<<STM32参考手册>>第56页,图8)得知:当APB1的时钟分频数为1的时候,TIM2~7的时钟为APB1的时钟,而如果APB1的时钟分频数不为1,那么TIM2~7的时钟频率将为APB1时钟的两倍。因此,TIM3的时钟为72M,再根据我们设计的arr和psc的值,就可以计算中断时间了。计算公式如下:
......
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

12

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2011-4-12
在线时间
0 小时
 楼主| 发表于 2011-5-8 11:58:50 | 显示全部楼层
我说呢,自己琢磨半天,老感觉不对。谢谢原子哥的解释。。
没有共产党,就没有新中国。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 16:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表