microcontroller - STMicro 是否错误地解释了术语 "shadow register"?

标签 microcontroller stm32 stm32f7 nucleo

我使用 STM32 系列微 Controller ,更具体地说是 STM32F7 系列。目前我正在研究通用计时器的使用。

关于双缓冲寄存器。

微 Controller 有时会使用双缓冲寄存器。这样,软件就可以对寄存器进行写入和读取,而不会造成麻烦。下图说明:

              buffered register:           active register:
                 --------------             --------------
                |   REGX_BUF   | <-------> |    REGX      |
                 --------------             --------------
                      |                           |
                      |                           |
                   SOFTWARE                    HARDWARE

         The software interacts        Updates to and from the
         only with the buffered        active register take place
         register.                     at specific moments (when it
                                       is 'safe').

         synonyms:                     synonyms:
           - buffered register            - active register
           - preload register
           - shadow register (?)

上图中REGX_BUFREGX都有几个术语。

  • 通常寄存器REGX被称为“事件寄存器”。
  • 寄存器 REGX_BUF 有时也称为“缓冲寄存器”。其他术语是“预加载寄存器”和“影子寄存器 (?)”。

解释了困惑。

不幸的是,“影子寄存器”一词令人困惑。根据我从互联网上的几个来源阅读的内容,它指的是 REGX_BUF。但在 STM32F746 微 Controller 的引用手册 RM0385 和 STM32F767 微 Controller 的 RM0410 中,我偶然发现了对“影子寄存器”这个术语的完全相反的解释。它不会引用 REGX_BUF,而是引用 REGX
这是引用手册中的图片:

RM0385 -> chapter 23 General-purpose timers -> 23.3.2 Counter modes -> Fig 199

RM0410 -> Chapter 26 General-purpose timers -> 26.3.2 Counter modes -> Fig 244

enter image description here

这个数字让我很困惑。是我对“影子寄存器”一词的理解有误,还是意法半导体在编写本引用手册时犯了错误?

最佳答案

问题在于术语“影子寄存器”没有特定的和架构独立的含义。

例如,ARM 架构有一组通用寄存器,您可以写入和读取 (R0 - R12)。但是,如果进入中断处理程序上下文,R8 - R12 会切换到“影子寄存器”。这意味着您仍然可以像在普通程序中一样对它们进行寻址,但是您访问的寄存器与您在普通程序中使用的 R8 - R12 完全不同。它们是专用的中断处理资源,因此您不必像往常一样处理保存和恢复寄存器。

一些 PIC 微 Controller 允许您对引脚 I/O 的同一地址进行写入和读取,但实际上,您写入的缓冲区与读取的缓冲区不同,因为写入引脚不一定会改变它们的立即声明。此配置允许架构在等待更改引脚状态时缓冲您的写入请求。这些额外的缓冲区有时也称为影子寄存器,看起来与您的示例相似。使用您的示例中给出的术语,我想这将被称为“预加载寄存器”。

通常,该术语用于指代您可以以相同方式处理的多个硬件资源。其中哪个是“真实”寄存器,哪个是“影子”寄存器在架构和供应商之间并不一致,最终也可能不是很重要。

关于microcontroller - STMicro 是否错误地解释了术语 "shadow register"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41812800/

相关文章:

c - 使用 STM32F0 ADC 单独读取不同的输入

c - 堆栈粉碎检测到STM32f7

c - 如何在c中缩放数字/数字范围

c - 接收 AT 命令

audio - 录制的 USB 音频信号中出现奇怪的音频信号

c - log2 在 C 中导致 STM32F4 MCU 出现故障

c - STM32外部中断一直触发

c - 如何在用户自定义函数中使用格式化字符串?

c - 使用单帧缓冲区的动画怎么可能?

c - 从闪存 STM32F779II 运行软件