RC 中 CR 寄存器的 MSI 位没有改变

问题描述 投票:0回答:1

我使用的是nucleo stm32L476系列控制器。我正在从头开始编写驱动程序。我观察到我的控制器在 RCC CR 寄存器中以 4 MHz(MSIRANGE 中的 0x6)的 MSI 时钟运行。 我想修改需要关闭 MSI 位(MSI = 0)的时钟频率。当我尝试这样做时,该位没有改变

有人可以建议为什么会这样吗?是否是因为如果我将 MSI 设置为 0,则不会有时钟运行?

我尝试了下面的代码 RCC->CR &= ~(1 << 0); RCC->CR |= (0x8 << 4); but observed that the value itself in MSI bit is not changing.

embedded stm32 microcontroller
1个回答
0
投票

正如 Ilya 在评论中所说,如果 MSI 直接或间接用作系统时钟(即作为被选为系统时钟的 PLL 的源),则无法关闭 MSI。

但是,您无需关闭 MSI 即可更改其频率。引用 RM0351 中的 RCC_CR.MSIRANGE 位域描述:

警告:当 MSI 关闭 (MSION=0) 或 时,可以修改 MSIRANGE MSI 已准备就绪 (MSIRDY=1)。当 MSI 开启时,不得修改 MSIRANGE 且未准备好(MSION=1 且 MSIRDY=0)

(强调我的)

JW

© www.soinside.com 2019 - 2024. All rights reserved.