[STM32F4] TIMER参数设置问题

[复制链接]
1357|15
 楼主| pkuzhx 发表于 2015-10-21 16:45 | 显示全部楼层 |阅读模式
刚开始使用STM32,我使用CubeMX配置的,我在网上看别人的教程如下:
TIMER网络教程.bmp
他是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。多谢版主
 楼主| pkuzhx 发表于 2015-10-22 10:29 | 显示全部楼层
自己再留个底,RM中是这样说的:
reg.png
时钟频率是f/(PSC + 1)的。
个人认为这样设置是为了让PSC=0时,设置有意义。
另外看时序图:
2.png
prescaler是0时,CK_CNT是不分频的(即1分频);prescaler是1时,CK_CNT2分频。
所以47999时,正是48000分频。
734774645 发表于 2015-10-22 11:57 | 显示全部楼层
是的,确实要加1的,比如有个函数,说是延时,里面参数给的是5,实际上是延时了6个周期
734774645 发表于 2015-10-22 11:58 | 显示全部楼层
版主的意思就是,你想做的参数是100,那么你弄99作为参数,实际运行时候就100了。
 楼主| pkuzhx 发表于 2015-10-22 14:49 | 显示全部楼层
734774645 发表于 2015-10-22 11:58
版主的意思就是,你想做的参数是100,那么你弄99作为参数,实际运行时候就100了。 ...

嗯,后来明白了
734774645 发表于 2015-10-22 17:08 | 显示全部楼层
楼主这个是做什么项目呢,感觉很高大上。
稳稳の幸福 发表于 2015-10-22 20:24 | 显示全部楼层
这个我本来也不知道,稀里糊涂的,原来是这样的。
 楼主| pkuzhx 发表于 2015-10-23 09:11 | 显示全部楼层
734774645 发表于 2015-10-22 17:08
楼主这个是做什么项目呢,感觉很高大上。

不高大上,就是stm32入门而已。。
豆腐块 发表于 2015-10-24 17:52 | 显示全部楼层
确实要加1的,比如有个函数,说是延时,里面参数给的是5,实际上是延时了6个周期

这个我也没懂,比如65535和0
wahahaheihei 发表于 2015-10-26 19:11 | 显示全部楼层
见到好几个人问这个问题了,就是可能因为有个跳转开销一个周期吧。
lefeng 发表于 2015-10-26 20:48 | 显示全部楼层
16bit数表示1~65536,所以0表示1,0xFFFF表示65536

0到0xFFFF,应该是0到65535
豆腐块 发表于 2015-10-28 21:17 | 显示全部楼层
prescaler是0时,CK_CNT是不分频的(即1分频);prescaler是1时,CK_CNT2分频。
所以47999时,正是48000分频

刚好差了个1
huangcunxiake 发表于 2015-10-28 21:31 | 显示全部楼层
直接你就按照cubeMX生产 的数据使用就行了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

45

主题

730

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部