[STM32F7] 生成的代码中RCC配置在SystemClock_Config()处失败。

[复制链接]
cutfall 发表于 2025-8-23 09:50 | 显示全部楼层 |阅读模式
我有一块STM32F7板块,已配置RCC并使用HSE作为时钟源。在使用调试器逐步执行生成的代码时,我的项目在SystemClock_Config()处失败,具体是在:

  /* Check the HSI ready flag */

   if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
   {
    return HAL_ERROR;
   }
  }

我在配置器中已完成所有设置,引脚配置部分没有错误。我还未向生成的代码添加任何代码,因此不确定导致此错误的原因。RCC配置确实显示了主时钟输出2和音频时钟输入的警告,我正使用SDMMC1且它们存在冲突,不确定它们是否是问题的根源。


公羊子丹 发表于 2025-8-24 07:27 | 显示全部楼层
看代码你是用HSE,但SystemClock_Config里还在检测HSI,可能是Cube配置里没关掉内部时钟。
周半梅 发表于 2025-8-24 07:28 | 显示全部楼层
检查下RCC配置里的PLL Source是不是正确选了HSE,而不是默认的HSI。
帛灿灿 发表于 2025-8-24 07:29 | 显示全部楼层
如果调试停在HSI Ready那一步,大概率是代码逻辑里多了一段没用的检查。
童雨竹 发表于 2025-8-24 07:30 | 显示全部楼层
Cube有时候生成的时钟初始化比较复杂,可以直接手写简化版SystemClock_Config。
万图 发表于 2025-8-24 07:30 | 显示全部楼层
你提到SDMMC和音频时钟冲突,这确实可能导致Cube给你生成警告甚至错配。
Wordsworth 发表于 2025-8-24 07:31 | 显示全部楼层
试着把外设时钟分开配置,先只开HSE和PLL,确认能跑起来再加SDMMC。
Bblythe 发表于 2025-8-24 07:32 | 显示全部楼层
HAL库里有些宏是通用模板,不一定完全贴合F7,要对照参考手册确认寄存器。
Pulitzer 发表于 2025-8-24 07:35 | 显示全部楼层
我建议先用RCC寄存器手动切换HSE,看能不能跑通,再回到HAL函数里找差异。
Uriah 发表于 2025-8-24 07:36 | 显示全部楼层
有可能是外部晶振没起振,你可以用示波器量下HSE引脚确认下。
Clyde011 发表于 2025-8-24 07:37 | 显示全部楼层
如果只是卡在HSIRDY判断,可以先注释掉这段,验证主时钟是否正常工作。
duo点 发表于 2025-8-25 15:29 | 显示全部楼层
可能和时钟配置逻辑错误有关。
onlycook 发表于 2025-8-25 15:30 | 显示全部楼层
硬件连接问题吧!
duo点 发表于 2025-8-25 15:31 | 显示全部楼层
如果使用HSE作为系统时钟源,通常不需要等待HSI就绪。
onlycook 发表于 2025-8-25 15:31 | 显示全部楼层
STM32CubeMX生成的代码可能默认启用了HSI检查,但未根据你的时钟配置调整逻辑。
七毛钱 发表于 2025-8-25 15:32 | 显示全部楼层
可能晶振未正确焊接或损坏。
内政奇才 发表于 2025-8-25 15:32 | 显示全部楼层
晶振的负载电容不匹配还有可能是PCB布局问题。
海滨消消 发表于 2025-8-25 15:33 | 显示全部楼层
如果时钟树配置错误,可能导致时钟信号不稳定,间接影响HSI/HSE的切换。
豌豆爹 发表于 2025-8-25 15:33 | 显示全部楼层
用示波器观察晶振是否起振。
麻花油条 发表于 2025-8-25 15:34 | 显示全部楼层
通过寄存器值和错误日志定位问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

39

主题

40

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部