观海 发表于 2025-4-13 09:11

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

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,很明显是有问题的,外部晶振供电后起振是非常快的,从这份代码上看。可能只要几千条指令就稳定了。这个一般是硬件的问题。
解决方法:

查看晶振有无问题
通过查看晶振附近电路
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/lljss1980/article/details/126632664

页: [1]
查看完整版本: GD32外部晶振起振慢导致实际不使用外部晶振