打印
[STM32F4]

TIMER参数设置问题

[复制链接]
874|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pkuzhx|  楼主 | 2015-10-21 16:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚开始使用STM32,我使用CubeMX配置的,我在网上看别人的教程如下:

他是48M的时钟,然后做48000分频,再计数1000次,产生1s的TIMER。
counter period设置成999我明白,prescaler设置成47999我有点疑问,难道不应该是48000么?
虽然47999和48000完全看不出影响。。。
沙发
mmuuss586| | 2015-10-21 18:59 | 只看该作者
还要加1的,确实是47999

使用特权

评论回复
板凳
pkuzhx|  楼主 | 2015-10-22 08:42 | 只看该作者
mmuuss586 发表于 2015-10-21 18:59
还要加1的,确实是47999

版主是想说要减1?
不太明白分频系数为什么要减1

使用特权

评论回复
地板
pkuzhx|  楼主 | 2015-10-22 09:40 | 只看该作者
mmuuss586 发表于 2015-10-21 18:59
还要加1的,确实是47999

哦,我明白了。是用16bit数表示1~65536,所以0表示1,0xFFFF表示65536,所以是+1。多谢版主

使用特权

评论回复
5
pkuzhx|  楼主 | 2015-10-22 10:29 | 只看该作者
自己再留个底,RM中是这样说的:

时钟频率是f/(PSC + 1)的。
个人认为这样设置是为了让PSC=0时,设置有意义。
另外看时序图:

prescaler是0时,CK_CNT是不分频的(即1分频);prescaler是1时,CK_CNT2分频。
所以47999时,正是48000分频。

使用特权

评论回复
6
734774645| | 2015-10-22 11:57 | 只看该作者
是的,确实要加1的,比如有个函数,说是延时,里面参数给的是5,实际上是延时了6个周期

使用特权

评论回复
7
734774645| | 2015-10-22 11:58 | 只看该作者
版主的意思就是,你想做的参数是100,那么你弄99作为参数,实际运行时候就100了。

使用特权

评论回复
8
pkuzhx|  楼主 | 2015-10-22 14:49 | 只看该作者
734774645 发表于 2015-10-22 11:58
版主的意思就是,你想做的参数是100,那么你弄99作为参数,实际运行时候就100了。 ...

嗯,后来明白了

使用特权

评论回复
9
734774645| | 2015-10-22 17:08 | 只看该作者
楼主这个是做什么项目呢,感觉很高大上。

使用特权

评论回复
10
稳稳の幸福| | 2015-10-22 20:24 | 只看该作者
这个我本来也不知道,稀里糊涂的,原来是这样的。

使用特权

评论回复
11
pkuzhx|  楼主 | 2015-10-23 09:11 | 只看该作者
734774645 发表于 2015-10-22 17:08
楼主这个是做什么项目呢,感觉很高大上。

不高大上,就是stm32入门而已。。

使用特权

评论回复
12
豆腐块| | 2015-10-24 17:52 | 只看该作者
确实要加1的,比如有个函数,说是延时,里面参数给的是5,实际上是延时了6个周期

这个我也没懂,比如65535和0

使用特权

评论回复
13
wahahaheihei| | 2015-10-26 19:11 | 只看该作者
见到好几个人问这个问题了,就是可能因为有个跳转开销一个周期吧。

使用特权

评论回复
14
lefeng| | 2015-10-26 20:48 | 只看该作者
16bit数表示1~65536,所以0表示1,0xFFFF表示65536

0到0xFFFF,应该是0到65535

使用特权

评论回复
15
豆腐块| | 2015-10-28 21:17 | 只看该作者
prescaler是0时,CK_CNT是不分频的(即1分频);prescaler是1时,CK_CNT2分频。
所以47999时,正是48000分频

刚好差了个1

使用特权

评论回复
16
huangcunxiake| | 2015-10-28 21:31 | 只看该作者
直接你就按照cubeMX生产 的数据使用就行了。

使用特权

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

本版积分规则

个人签名:原来可以设置签名档啊!

45

主题

730

帖子

6

粉丝