STM32
直播中

龙献益

7年用户 959经验值
私信 关注
[问答]

STM32L071做时钟配置成32M的话,系统就会在执行时钟切换时跑飞的原因?

最近在用STM32L071这个片子,做时钟配置的时候发现PLLVCO最大只能配置到16M,配成32M的话,系统就会在执行时钟切换时跑飞,于是我想到可能是FLASH的等待周期造成的,所以就写了下FLASH的ACR寄存器,将LATENCY位置1,烧录一次之后就再也无法烧录,IDE提示device could not powered up错误,,请问是啥原因?该怎么解决?
IDE:MDK5
调试工具:CMSIS DAP
芯片:STM32L071CBT

回帖(2)

高倩

2024-4-2 15:18:00
你尝试使用STM32Cubeprogrammer连接目标板看看option配置,看看你改动些什么,将其恢复到默认配置。另外,你开发时最好基于cubeMx进行初始化配置,
这样的话,时钟及相关flash latency都会自动帮你配置好。
举报

张燕

2024-4-2 16:56:52
有几个原因可能导致系统在执行时钟切换时出现问题:

1. PLLVCO的最大配置限制:根据 STM32L071 的数据手册,PLL VCO 的最大配置限制是 16 MHz。所以,将其配置为 32 MHz 可能导致系统不可靠或产生错误。

2. FLASH 等待周期:如果系统时钟频率增加,可能需要调整 FLASH 等待周期(LATENCY)以确保正确的访问时间。在 STM32L071 中,默认等待周期配置为 0,对应于最大频率为 16 MHz。如果将时钟配置为 32 MHz,则可能需要增加等待周期。在给 LATENCY 寄存器写入新的值之前,确保在 FLASH 访问期间禁止所有中断。

关于无法烧录的问题,可能是由于 LATENCY 配置错误导致的。尝试恢复芯片到默认状态,然后重新进行烧录和调试。

解决此问题的步骤:

1. 恢复芯片到默认状态:使用 STM32L071 的复位引脚将芯片复位到默认状态。

2. 确保时钟配置正确:根据 STM32L071 的数据手册,将系统时钟配置为可靠的频率,例如 16 MHz。确保时钟配置符合芯片的规格和限制。

3. 配置 FLASH 等待周期:根据新的时钟频率,使用合适的等待周期值配置 LATENCY 寄存器。

4. 确认烧录和调试工具正常工作:确保使用正确的 IDE(例如 MDK5)和调试工具(例如 CMSIS DAP),以便正确烧录和调试 STM32L071 芯片。

5. 重新烧录和调试:在确认以上步骤都正确执行后,尝试重新烧录和调试代码。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分