打印
[应用相关]

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

[复制链接]
672|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
在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 | 只看该作者

使用特权

评论回复
5
gaonaiweng|  楼主 | 2022-4-30 12:06 | 只看该作者
STM32 Timer,对什么是主模式,什么是从模式

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

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

使用特权

评论回复
6
呐咯密密| | 2022-4-30 13:40 | 只看该作者
直白点说,如果不使能影子寄存器,那么修改频率、占空比计数值等操作会在你设置完之后立刻生效,如果使能了影子寄存器,那么会在下一次更新到来之前自动设置,并在更新到来后立刻生效。可以看成一个时间上的缓冲。

使用特权

评论回复
7
Uriah| | 2022-10-6 11:30 | 只看该作者

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

使用特权

评论回复
8
Bblythe| | 2022-10-6 14:29 | 只看该作者

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

使用特权

评论回复
9
Wordsworth| | 2023-5-1 07:28 | 只看该作者

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

使用特权

评论回复
10
Clyde011| | 2023-5-1 08:31 | 只看该作者

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

使用特权

评论回复
11
万图| | 2023-5-1 10:27 | 只看该作者

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

使用特权

评论回复
12
Uriah| | 2023-5-1 11:30 | 只看该作者

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

使用特权

评论回复
13
帛灿灿| | 2023-5-1 13:26 | 只看该作者

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

使用特权

评论回复
14
Bblythe| | 2023-5-1 14:29 | 只看该作者

STM32CUBEMX配置生成初始化代码

使用特权

评论回复
15
周半梅| | 2023-5-1 16:25 | 只看该作者

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

使用特权

评论回复
16
Pulitzer| | 2023-5-1 17:28 | 只看该作者

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

使用特权

评论回复
17
周半梅| | 2023-5-1 18:31 | 只看该作者

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

使用特权

评论回复
18
童雨竹| | 2023-5-1 19:24 | 只看该作者

它导致设计复杂,代码可读性差

使用特权

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

本版积分规则

68

主题

688

帖子

3

粉丝