打印

STM32定时器的预装载寄存器与影子寄存器之间的关系

[复制链接]
2946|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
火箭球迷|  楼主 | 2010-5-29 20:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本文的说明依据STM32参考手册(RM0008)第10版:
英文:http://www.st.com/stonline/products/literature/rm/13902.pdf
中译文:http://www.stmicroelectronics.com.cn/stonline/mcu/images/STM32_RM_CH_V10_1.pdf
在STM32参考手册的第13、14章中,都有一张定时器的框图,下面是第14章中定时器框图的局部,图中黄色框所示的是auto-reload register,在下面的第14.3.2节"Counter Modes"就解释了auto-reload register的用法。
在图中可以看到auto-reload register这个框有一个阴影,有些其它寄存器也有用阴影表示,如我用蓝色标出的Capture/Compare寄存器;有阴影的寄存器,表示在物理上这个寄存器对应2个寄存器,一个是程序员可以写入或读出的寄存器,称为preload register(预装载寄存器),另一个是程序员看不见的、但在操作中真正起作用的寄存器,称为shadow register(影子寄存器);正如手册上的14.3.1节所说,根据TIMx_CR1寄存器中APRE位的设置,preload register的内容可以随时传送到shadow register,即两者是连通的(permanently),或者在每一次更新事件(UEV)时才把preload register的内容传送到shadow register。
在图中用红线圈起的一个大写的U和一个向下的箭头,表示对应寄存器的影子寄存器可以在发生更新事件时,被更新为它的preload register的内容;而图中用绿线圈起的部分,表示对应的Autoreload register可以产生一个更新事件(U)或更新事件中断(UI)。
设计preload register和shadow register的好处是,所有真正需要起作用的寄存器(shadow register)可以在同一个时间(发生更新事件时)被更新为所对应的preload register的内容,这样可以保证多个通道的操作能够准确地同步。如果没有shadow register,或者preload register和shadow register是直通的,即软件更新preload register时,同时更新了shadow register,因为软件不可能在一个相同的时刻同时更新多个寄存器,结果造成多个通道的时序不能同步,如果再加上其它因素(例如中断),多个通道的时序关系有可能是不可预知的。


转自:http://blog.**/STM32/401461/message.aspx
STM32_TIM_Auto_Reload_Register.GIF (22.31 KB)
下载次数:1
2010-3-21 19:45




沙发
zwll| | 2010-5-29 22:50 | 只看该作者
有了中文谁还看英文,呵呵

使用特权

评论回复
板凳
xwj| | 2010-5-29 22:55 | 只看该作者
这年头...
有了中文还是必须得看英文的,不然搞不好就被误导了。

有个中文译本至少看起来还是快很多的,用的时候再中英对照一下。

使用特权

评论回复
地板
zwll| | 2010-5-29 22:57 | 只看该作者
这年头...
有了中文还是必须得看英文的,不然搞不好就被误导了。

有个中文译本至少看起来还是快很多的,用的时候再中英对照一下。
xwj 发表于 2010-5-29 22:55
呵呵,也有道理

使用特权

评论回复
5
无冕之王| | 2010-5-30 16:11 | 只看该作者
很好的资料

使用特权

评论回复
6
无冕之王| | 2010-5-30 16:12 | 只看该作者
有些资料如果直接看英文的,看时间久了就打瞌睡

使用特权

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

本版积分规则

个人签名:姚明的铁杆球迷

150

主题

3470

帖子

3

粉丝