当您写入具有相同配置的寄存器时会发生什么?

What happens when you write to a register with the same configuration?

我正在使用 STM32L432KC,对嵌入式世界还比较陌生。如果我写入一个配置寄存器,等待一段时间,然后用相同的配置再次写入该寄存器,会发生什么情况。这有什么影响吗?

作为参考,我使用的是 STM32L432KC 微控制器。有问题的寄存器是复位和时钟控制 (RCC),AHB2 外设时钟启用寄存器 (RCC_AHB2ENR)。我有一个功能,可以通过“或”运算为 GPIO 端口启用时钟。我想知道在引脚处于活动状态时调用该函数是否会产生任何影响。

所有设备上的所有寄存器都没有通用的答案。唯一正确的做法是查阅相关资料sheet或参考手册

STM32L432 RCC_AHB2ENR 的特定情况下,所有 使用的 位都指定为“ 由软件设置和清除 ”,read/write 上没有特定的硬件操作。我相信所有 STM32 上的 RCC_AHB2ENR 都是如此。但是请注意,未使用的位是 reserved,不应设置为 reset value 以外的任何值 - 也在参考手册和这种情况全为零。

一些寄存器在硬件控制下更改值,因此重写以前写入的值可能会产生影响。您的一个简单示例是 TIM1_CNT,如果 TIM1 是 运行,则计数器将发生变化并且重写它将影响它的周期,并且可以使用任何 capture/compare 事件或事件输出或 PWM为了。