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
|