免责声明:
本文内容仅代表作者个人观点和知识水平,不构成任何推荐或建议。因参考本文而造成任何直接或间接损失后果的,作者不承担任何责任。
本文中的信息仅为作者个人学习研究成果的分享,不作为专业意见或建议。文章中如有错误,请斧正。因应用本文内容导致的风险或损失,作者不承担任何法律责任。
以下是正文内容
——————————————————
STM32。影子寄存器是什么,及其作用
是什么?
某个寄存器x,可能具有一个也校准寄存器x的影子寄存器。可以把影子寄存器理解为寄存器x的的缓存,用于缓冲数据。当我写入这个寄存器时,不立即更新寄存器x 的值,而是先写入寄存器x的影子寄存器,等到MCU认为某个比较合适的时刻的时候,再将影子寄存器x的值写入实际寄存器x里。所以影子寄存器起到一个缓存作用。
有什么作用?
举例子,STM32的RTC里就有影子寄存器,
STM32 中的 RTC 模块中存在实际寄存器和对应的影子寄存器。
具体来说,每个实际寄存器都有一个与其对应的影子寄存器。这两个寄存器具有相同的地址和位定义,但在正常操作期间,它们之间是相互独立且隔离的。
当用户通过程序对 RTC 进行配置时,实际上是将新设置写入到对应的影子寄存器中。而实际寄存器则会继续按照上一次更新事件的设定值进行工作,直到下一次更新事件的到来才从影子寄存器中读取新的设置并将之应用于实际运行中。
在一个典型的RTC应用中,用户可以通过程序修改RTC的时间设置,然后将新的时间设置保存到RTC内部的一个或多个寄存器中。
如果没有影子寄存器,那么每次修改时间设置时都会立即影响到RTC的实际运行状态,可能导致 RTC 的时间显示错误或者不稳定。 而有了影子寄存器后,当用户通过程序修改