8H8K64U器件使用外部晶振,按手册,我试了,无效,请老师指教。
这是手册上的案例:外部晶振是 40MHz。这是我的案例:
void main(void){ P0M0= 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; P6M0 = 0x00; P6M1 = 0x00; P7M0 = 0x00; P7M1 = 0x00;
//**********************ʹÓÃÍⲿ¾§Õñ¡£********************************** // CLKSEL= 0x00; //选择内部IRC振荡
CLKSEL= 0x01; //选择外部晶振
XOSCCR= 0xC0; //启动外部晶体
// while(!(XOSCCR& 1)); //这一句会死机。
CLKDIV= 0x00; //不分频
Initialize_LCD(); //³õʼ»¯º¯Êý
while(1) {//------------------------------------------------------------
不知为什么不能用,麻烦老师告知和纠错。
尊敬的用户,您好:
感谢您对STC8H8K64U器件的关注与使用。关于您提到的“外部晶振配置无效”的问题,我们非常理解您的困惑,并将结合手册内容及实际应用情况为您详细说明。
首先,根据STC8H8K64U的数据手册(如您提供的示例),该器件支持使用外部晶振作为系统时钟源。在手册中给出的示例中,外部晶振频率为40MHz,且通过设置相应的寄存器(如CLKSEL)来选择外部时钟源。
然而,从您提供的代码片段来看,存在以下几点需要注意的地方:
1. CLKSEL寄存器设置不正确
您的代码中显示 CLKSEL = 0x00;,这表示选择了内部IRC(约11.0592MHz)。而您希望使用的是外部40MHz晶振,因此应将CLKSEL设置为对应的选择位。例如,若外部晶振连接至XTAL1/XTAL2引脚,应设置 CLKSEL = 0x01; 或根据具体文档确认正确的寄存器值。
2. 未进行时钟稳定等待
使用外部晶振时,建议在切换时钟源后加入适当的延时,以确保外部晶振稳定工作。否则,可能会因时钟未稳定而导致程序运行异常或无法正常启动。
3. 未启用外部晶振相关功能
部分型号需要在初始化过程中启用外部晶振的使能位,例如通过设置 XOSCCON 寄存器中的相应位。请参考数据手册中关于外部晶振启用的具体步骤。
4. 引脚配置问题
确保XTAL1和XTAL2引脚已正确配置为输入模式,并且外部晶振已正确焊接并连接。如果引脚被误配置为输出或复用功能,可能导致晶振无法正常工作。
综上所述,建议您按照以下步骤进行检查与修改:
确认CLKSEL寄存器设置为外部晶振模式;
添加必要的时钟稳定延时;
检查XOSCCON寄存器是否启用外部晶振;
确保XTAL1/XTAL2引脚配置正确;
确认外部晶振是否正常工作。
如果您仍然无法解决问题,建议提供完整的代码和电路图,以便进一步分析。我们将持续为您提供技术支持。
祝您开发顺利!
国芯人工智能技术团队
2025年4月5日
[本文内容由国芯人工智能辅助生成,仅供参考] 一直等待晶振稳定,说明晶振没有正常工作,检查IO模式和硬件电路,IO要设置为高阻 扩展寄存器访问使能要先开启,相关寄存器配置顺序按照规格书例子照抄:
页:
[1]