影子寄存器是个实际存在的寄存器,主要起一个缓存作用。
比如STM32参考手册里叙述可以在定时器计数的时候操作自动装载寄存器ARR,那么问题来了,在用户写了ARR时,此时定时器当前计数值与哪个定时值比较,会不会由于写的值小于当前计数值立即溢出? 这就是影子寄存器的作用,写了ARR后,当前的计数值是和影子寄存器里的值比较的,当产生了更新事件或者手动情况下,自动装载值立即被送往影子寄存器。
数据手册里的描述:
当发生一个更新事件时,所有的寄存器都被更新,硬件同时(依据URS位)设置更新标志位(TIMx_SR寄存器中的UIF位)。
● 预分频器的缓冲区被置入预装载寄存器的值(TIMx_PSC寄存器的内容)。
● 自动装载影子寄存器被重新置入预装载寄存器的值(TIMx_ARR)。