定时器中断迷惑
大神们好,最近才接触STM32,学到定时器中断,我想问下,为什么教程里的72M时钟,就要除以36000,得数为2000,表示1秒计数2000次?那除以72000得数为1000,不也是1秒计数到1000?这个2000,1000的数是初值吗?初值不应该是从该数计数到65536?为何是从0计数到该数呢?实在不明白,希望大神们指点!万分感谢!你的问题我也遇到过
1楼@toofree说的很好 但是看不懂 我知道你在问什么 但是说不好
请一楼看下
72M是72 000 000MHZ
先分频(也就是找一个分母拿去等分)比如72 00(楼主数据有误 这里最大是65535)
得到的结果是72 000000/72 00=1 0000HZ
频率和周期互为倒数 所以T=1/10000=0.0001s也就是0.1ms记一个数。
现在在设置一个初值,比如向上计数器(从0开始)初值设为1000
那就是记了1000个数 它的溢出时机是1000*0.1ms=0.1s也就是100ms
所以这个定时器就是100ms的
这就是定时器的两个参数。
其实可以直接72M/(7200*1000)获得
这个得看手册呀有部分定时器最快72M时钟,还有部分宝器最快36M时钟。
你说的36000和72000应该是预分频寄存器,但是寄存器是16位的,不可能出现72000,最大只有65535.
你说的2000或1000,应该是捕获/比较寄存器
具体计数的时候,应该是计数寄存器,这个寄存器什在变。
具体计数的时候,可以上计数,也可以下计数。
另外STM32F1系列参考手册RM0008,你值得拥有。
这个是定时器的计数频率,而36000这样的是分频值,定时器的输入时钟频率是72M,但是一般都会进行分频来改变定时器的计数频率,这样定时器就可以工作在不同频率了 本帖最后由 wenyangzeng 于 2018-5-13 19:24 编辑
1000和2000与最大计数65535不是一回事,也就是说同样计数值到65535,计数速度的慢或快。 本帖最后由 lvpeng-1619958 于 2018-5-14 09:58 编辑
你仔细看一看,36000是不是代表36KHz?为了得到36Khz的中断频率,所以2000写入TIMx_ARR寄存器里面。一秒计数多少次 还得看你的timer的分频系数,72Mhz不分频那1秒还是会计数72000000次,1000分频就计数72000次。
所以2000只是为了配置中断频率,每秒计数多少次看分频系数
仔细阅读时钟树,STM32内部的时钟很多,最明显的是APB1和APB2的时钟频率都不一样 toofree 发表于 2018-5-13 23:36
这个得看手册呀有部分定时器最快72M时钟,还有部分宝器最快36M时钟。
看下7楼吧
页:
[1]