gaonaiweng 发表于 2022-4-30 11:59

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

在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。

gaonaiweng 发表于 2022-4-30 12:00

在图中用红线圈起的一个大写的U和一个向下的箭头,表示对应寄存器的影子寄存器可以在发生更新事件时,被更新为它的preload register的内容;而图中用绿线圈起的部分,表示对应的Autoreload register可以产生一个更新事件(U)或更新事件中断(UI)。

gaonaiweng 发表于 2022-4-30 12:00

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

gaonaiweng 发表于 2022-4-30 12:02

gaonaiweng 发表于 2022-4-30 12:06

STM32 Timer,对什么是主模式,什么是从模式

定时器一般是通过软件设置而启动,STM32的每个定时器也可以通过外部信号触发而启动,还可以通过另外一个定时器的某一个条件被触发而启动。这里所谓某一个条件可以是定时到时、定时器超时、比较成功等许多条件。

这种通过一个定时器触发另一个定时器的工作方式称为定时器的同步,发出触发信号的定时器工作于主模式,接受触发信号而启动的定时器工作于从模式

呐咯密密 发表于 2022-4-30 13:40

直白点说,如果不使能影子寄存器,那么修改频率、占空比计数值等操作会在你设置完之后立刻生效,如果使能了影子寄存器,那么会在下一次更新到来之前自动设置,并在更新到来后立刻生效。可以看成一个时间上的缓冲。

Uriah 发表于 2022-10-6 11:30


small 模式下未指存储类型的变量默认为data型

Bblythe 发表于 2022-10-6 14:29


不要根据不同的参数类型走不同的代码逻辑

Wordsworth 发表于 2023-5-1 07:28


二值化就是让图像的像素点矩阵中的每个像素点的灰度值为0(黑色)或者255(白色

Clyde011 发表于 2023-5-1 08:31


代码量小的时候用来做条件判断

万图 发表于 2023-5-1 10:27


CPU 是能够让你的计算机叫计算机的核心组件,但是它却不能代表你的电脑,CPU 与计算机的关系就相当于大脑和人的关系

Uriah 发表于 2023-5-1 11:30


但是如果不懂程序设计的思想的话,会给你做项目的过程中带来很多很多的困惑。

帛灿灿 发表于 2023-5-1 13:26


脚本的功能很强大,可以做很多事情,虽然不是最好的方式

Bblythe 发表于 2023-5-1 14:29


STM32CUBEMX配置生成初始化代码

周半梅 发表于 2023-5-1 16:25


Git 是一种分布式版本控制系统

Pulitzer 发表于 2023-5-1 17:28


光绘出零件间联机的PCB设计布线

周半梅 发表于 2023-5-1 18:31


只要内存占用量不超过 256.0 就可以用 small 模式编译

童雨竹 发表于 2023-5-1 19:24


它导致设计复杂,代码可读性差
页: [1]
查看完整版本: STM32定时器的预装载寄存器与影子寄存器之间的关系