晕,就是auto reload的寄存器的值要隔一次才能生效。。。。。
如此设计应该是因为 定时器电路 和 总线 异步的原因吧。
linqing171 发表于 2010-3-10 12:40 
请看我的博客:STM32定时器的预装载寄存器与影子寄存器之间的关系
根据TIM_CR1的APRE位的设置,如果APRE=0,则写入自动重装载寄存器时,写入的内容会直接进入实际操作的影子寄存器中;如果APRE=1,则写入自动重装载寄存器时,写入的内容会先进入预装载寄存器中,在每次发生更新事件时才会传送到实际操作的影子寄存器中。
更新事件的产生有2种情况:
TIM_CR1的URS=0:计数器溢出/下溢、设置UG位或从模式控制器都可以产生更新事件;
TIM_CR1的URS=1:只有计数器溢出/下溢才能产生更新事件。
13楼问题的原因应该是:设置了APRE=1,但没有通过设置UG位产生更新事件,立即把写入的数据传送到影子寄存器;而是等到计数器溢出时才真正地更新了影子寄存器的内容。
|