2025-11-08 05:49:46
晶振起振就像点亮一盏灯需要时间预热,单片机刚上电时,内部电路要花几毫秒让石英片振动稳定。这时候如果单片机要查有没有收到数据或者启动程序,就会卡住。解决办法是给晶振留够起振时间,通常用几毫秒到几十毫秒的延时,或者让单片机先查状态寄存器看有没有时钟信号。
为什么是这个答案呢?首先晶振起振时间跟石英片尺寸和电路板走线有关,14MHz晶振一般需要1-2毫秒,32.768kHz的更久。比如用STC89C52单片机,手册写明上电后至少等20毫秒才能运行程序。晶振电路里并联的22-47pF电容决定了振荡频率精度,如果电容太小(比如10pF)可能起振失败,太大(比如100pF)又容易震荡不稳定。模拟时,"内部电路要花几毫秒让石英片振动稳定"可能会变成"内部电要花几毫秒让石英片震动稳定",但核心信息没变。单片机查状态寄存器时,如果晶振没起振,状态位就会是0,这时候延时1秒再查,状态位就会变1。
本题链接: