打印

STM8定时器

[复制链接]
3857|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
siheshan|  楼主 | 2012-6-21 09:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近看STM8S_RM_CHV4.PDF 中TIM1    (page110)..有以下问题非常纠结,活了20多年,第一次感觉中文理解能力不行 。
   首先 自动装载寄存器(TIM1_ARR)=预装载寄存器+影子寄存器组成。
   当发生一个更新事件时,所有的寄存器都被更新,硬件同时(依据URS位)设置更新标志位(TIMx_SR寄 存器的UIF位):
   自动装载影子寄存器被重新置入预装载寄存器的值(TIMx_ARR)。
   预分频器的缓存器被置入预装载寄存器的值(TIMx_PSC寄存器的内容)。????????
   预装载寄存器到底是个什么东西,我的理解是当更新事件发生:预装载寄存器给了影子寄存器;预装载寄存器的值(TIMx_PSC寄存器的内容) 写入预分频器。但是预装载寄存器和TIMX_PSC有关系吗?它不是属于自动装载寄存器的吗?它怎么可以在产生更新事件后直接操作两次啊?
   
   还有下文:
   预分频器的值由预装载寄存器写入,保存了当前使用值的影子寄存器在低位(LS)写入时被载入。
   需两次单独的写操作来写16位寄存器,高位(MS)先写。不要使用先写低位(LS)的LDW指令。
   新的预分频器的值在下一次更新事件到来时被采用。
   
   
   我想问的是:在产生更新事件后,预装载寄存器到底是怎么去操作的?望大师指教!
沙发
siheshan|  楼主 | 2012-6-21 11:06 | 只看该作者
大师指教啊,难道真的让我活在郁闷之中。。:( 不过看了一篇**很不错,感觉有点眉目:
有阴影的寄存器,表示在物理上这个寄存器对应2个寄存器,一个是程序员可以写入或读出的寄存器,称为preload register(预装载寄存器),另一个是程序员看不见的、但在操作中真正起作用的寄存器,称为shadow register(影子寄存器)

   设计preload register和shadow register的好处是,所有真正需要起作用的寄存器(shadow register)可以在同一个时间(发生更新事件时)被更新为所对应的preload register的内容,这样可以保证多个通道的操作能够准确地同步。如果没有shadow register,或者preload register和shadow register是直通的,即软件更新preload register时,同时更新了shadow register,因为软件不可能在一个相同的时刻同时更新多个寄存器,结果造成多个通道的时序不能同步,如果再加上其它因素(例如中断),多个通道的时序关系有可能是不可预知的。

使用特权

评论回复
板凳
gyfeng1017| | 2012-6-21 14:33 | 只看该作者
STM8 定时器  确实挺 复杂。

使用特权

评论回复
地板
xiaoliming| | 2013-1-9 23:45 | 只看该作者
越来越觉得 STM8 强大了   

使用特权

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

本版积分规则

0

主题

10

帖子

1

粉丝