GD32外部晶振起振慢导致实际不使用外部晶振

这篇博客讨论了在系统时钟配置中遇到的HXTAL启动超时异常情况。正常情况下,外部晶振起振快速,但代码显示timeout值远大于预期,暗示可能存在硬件问题。解决方案包括检查晶振本身及其周围电路,确保其正常工作。
摘要由CSDN通过智能技术生成
static void system_clock_72m_hxtal(void)
{
    uint32_t timeout = 0U;
    uint32_t stab_flag = 0U;
    uint32_t i;

    /* enable HXTAL */
    RCU_CTL0 |= RCU_CTL0_HXTALEN;

    /* wait until HXTAL is stable or the startup time is longer than HXTAL_STARTUP_TIMEOUT */
    do {
        timeout++;
        stab_flag = (RCU_CTL0 & RCU_CTL0_HXTALSTB);
    } while((0U == stab_flag) && (HXTAL_STARTUP_TIMEOUT != timeout));
    /* if fail */
    if(0U == (RCU_CTL0 & RCU_CTL0_HXTALSTB)) {				//line1
        return;
}

.....
}

调试时发现,执行到line1时,正常的timeout=0x300~0x400左右,异常的大于HXTAL_STARTUP_TIMEOUT,很明显是有问题的,外部晶振供电后起振是非常快的,从这份代码上看。可能只要几千条指令就稳定了。这个一般是硬件的问题。
解决方法:

  1. 查看晶振有无问题
  2. 通过查看晶振附近电路
GD32 晶振不起振是指在使用GD32芯片时,外部晶振无法正常启动运行的情况。根据引用和引用的内容,这可能是因为某些型号的GD32芯片不支持外部晶振的起振,无论是有源晶振还是无源晶振都无法使用。具体来说,引用中提到的GD32 F450 VGH6型号芯片就属于这种不支持外部晶振起振的类型。 要解决这个问题,可以考虑使用内部晶振取代外部晶振。根据引用的内容,当外部晶振无法起振时,系统会自动切换到内部晶振。因此,可以在程序中进行相应的设置,使系统可以正常运行。 另外,如果想继续使用外部晶振,可以根据引用的内容,在相应的初始化函数中添加RCU_CTL |= RCU_CTL_HXTALEN;这句话来启用有源晶振。 总结起来,当遇到GD32晶振不起振的问题时,可以考虑使用内部晶振替代外部晶振,或者根据具体情况添加相应的代码来启用有源晶振。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [GD32替换STM32启动问题](https://blog.csdn.net/qq_37016048/article/details/125574506)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [STM32/GD32学习指南-踩坑之(一)外部晶振配置,初始化失败,不起振](https://blog.csdn.net/qq_38584212/article/details/131164735)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值