ST意法半导体
直播中

李皓圳

8年用户 1176经验值
私信 关注
[问答]

STM32F103C8T6无法选择外部晶振怎么解决?

我从网上购入了STM32F103C8T6的核心板,板上有外部晶振。但我使用STM32CubeMX生成项目时,却无法选择外部晶振(如下图)。请问要在哪里设置才能选择外部晶振呀?

回帖(1)

尚文清

2025-5-7 17:56:12

在STM32CubeMX中无法选择外部晶振(HSE)的问题通常与配置步骤或硬件设置有关。以下是详细的解决方案:




步骤1:确认芯片型号和CubeMX配置




  1. 检查芯片型号

    在CubeMX的工程设置中,确认选择的型号是STM32F103C8Tx(与你的核心板完全一致)。不同型号的时钟树可能有差异。




  2. 更新CubeMX版本

    如果使用的是旧版本CubeMX,可能存在配置选项缺失的问题。建议升级到最新版本(官网下载)。






步骤2:启用外部晶振(HSE)




  1. 进入RCC配置

    在CubeMX主界面,找到System Core > RCC,将High Speed Clock (HSE) 设置为 Crystal/Ceramic Resonator(如下图)。

    RCC配置示意图




  2. 检查时钟树配置

    点击顶部Clock Configuration标签,确认HSE已启用,并配置为系统时钟源(SYSCLK)。通常步骤:  



    • 将HSE的分频/倍频设置正确(例如HSE直接作为PLL输入,再倍频到72MHz)。  

    • 最终将PLL输出作为SYSCLK源。

      时钟树配置示例






步骤3:检查引脚分配




  1. 确认晶振引脚未被占用

    STM32F103C8T6的HSE默认引脚为:  



    • OSC_IN → PD0  

    • OSC_OUT → PD1

      在CubeMX的引脚分配图中,检查这两个引脚是否被其他功能(如GPIO、调试接口等)占用。若被占用,需取消其他功能或更换引脚。




  2. 检查核心板原理图

    确保核心板的外部晶振确实连接到PD0和PD1。部分廉价核心板可能未正确连接晶振,或需要手动焊接跳线帽。






步骤4:代码生成与验证




  1. 生成代码并检查

    生成代码后,打开生成的main.c,在SystemClock_Config()函数中,应看到HSE相关的初始化代码,例如:  


    RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
    RCC_OscInitStruct.HSEState = RCC_HSE_ON;



  2. 硬件排查  



    • 用示波器测量晶振引脚,确认是否起振(8MHz晶振常见)。  

    • 检查晶振负载电容(通常为2×22pF)是否正确焊接。  

    • 尝试更换晶振,排除硬件损坏可能。






常见问题补充




  • Q:CubeMX中HSE选项灰色无法选择?

    A:可能芯片型号选择错误,或当前时钟树配置冲突(如HSI被强制启用)。检查RCC配置和时钟树逻辑。




  • Q:程序烧录后无法运行?

    A:可能是晶振未起振,导致系统时钟失败。尝试在stm32f1xx_hal_conf.h中启用HSE_BYPASS(仅当使用有源晶振时),或检查硬件连接。






总结



  1. 确保CubeMX中正确启用了HSE并配置了时钟树。  

  2. 检查晶振引脚未被占用且硬件连接正确。  

  3. 生成代码后验证初始化逻辑,必要时调试硬件。


如果问题仍未解决,建议提供核心板原理图截图和CubeMX配置截图进一步分析。

举报

更多回帖

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