找回密码
 立即注册
查看: 3342|回复: 20

STC8H使用外部32768晶振RTC,初始化卡死。(自己搞定了!)

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-04-23 16:05:29

13

主题

40

回帖

295

积分

中级会员

积分
295
发表于 2023-4-28 02:51:09 | 显示全部楼层 |阅读模式
本帖最后由 zcllom 于 2023-4-29 11:23 编辑

STC8H使用外部32768晶振RTC,初始化卡死在一个while等待中。


    INIYEAR = 21;     //Y:2021
    INIMONTH = 12;    //M:12
    INIDAY = 31;      //D:31
    INIHOUR = 23;     //H:23
    INIMIN = 59;      //M:59
    INISEC = 50;      //S:50
    INISSEC = 0;      //S/128:0

//STC8H8K64U B版本芯片使用内部32K时钟,休眠无法唤醒
//    IRC32KCR = 0x80;   //启动内部32K晶振.
//    while (!(IRC32KCR & 1));  //等待时钟稳定
//    RTCCFG = 0x03;    //选择内部32K时钟源,触发RTC寄存器初始化

    X32KCR = 0x80 + 0x40;   //启动外部32K晶振, 低增益+0x00, 高增益+0x40.
    while (!(X32KCR & 1));  //等待时钟稳定
    RTCCFG = 0x01;    //选择外部32K时钟源,触发RTC寄存器初始化

    RTCIF = 0x00;     //清中断标志
    //RTCIEN = 0x88;    //中断使能, 0x80:闹钟中断, 0x40:日中断, 0x20:小时中断, 0x10:分钟中断, 0x08:秒中断, 0x04:1/2秒中断, 0x02:1/8秒中断, 0x01:1/32秒中断
    RTCIEN = 0x08;
    RTCCR = 0x01;     //RTC使能

    while(RTCCFG & 0x01);        //等待初始化完成,需要在 "RTC使能" 之后判断.
    //设置RTC时间需要32768Hz的1个周期时间,大约30.5us. 由于同步, 所以实际等待时间是0~30.5us.
    //如果不等待设置完成就睡眠, 则RTC会由于设置没完成, 停止计数, 唤醒后才继续完成设置并继续计数.

回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-04-23 16:05:29

13

主题

40

回帖

295

积分

中级会员

积分
295
发表于 2023-4-28 02:52:05 | 显示全部楼层
卡死在这个位置
   while (!(X32KCR & 1));  //等待时钟稳定
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2023-4-28 07:52:04 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-30 14:38:57

25

主题

977

回帖

3599

积分

超级版主

积分
3599
发表于 2023-4-28 09:04:46 | 显示全部楼层
外接的32768晶振的两个脚上一定要加电容(建议22pF~47pF)
否则晶振容易不起振而卡死在这里
你可以用示波器看看你的32768是否有起振
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-04-23 16:05:29

13

主题

40

回帖

295

积分

中级会员

积分
295
发表于 2023-4-28 09:36:16 | 显示全部楼层
EPSON.PNG


jinz.PNG


SHIBOQI.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-04-23 16:05:29

13

主题

40

回帖

295

积分

中级会员

积分
295
发表于 2023-4-28 09:50:01 | 显示全部楼层
截图如上所示:
一直卡死在  while (!(X32KCR & 1));  //等待时钟稳定
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-04-23 16:05:29

13

主题

40

回帖

295

积分

中级会员

积分
295
发表于 2023-4-28 09:52:44 | 显示全部楼层
神*** 发表于 2023-4-28 07:52
你直接用下面这个演示程序测试,附件中是完整的项目文件

你这个例程用的是内部32K,我现在接的是外部32768,之前用内部的没问题,现在为了高精度用外部的。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-04-23 16:05:29

13

主题

40

回帖

295

积分

中级会员

积分
295
发表于 2023-4-28 10:02:38 | 显示全部楼层
本帖最后由 zcllom 于 2023-4-28 10:13 编辑

到底是怎么一个回事啊,是不是因为我用的EPSON晶振自带内部12.5pF电容的缘故,我外面还加了12pF电容。但是从示波器上看,给P1.7的波形挺漂亮的啊!!??
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2023-4-28 12:51:19 | 显示全部楼层
1.png
注释掉前句,去除后三句注释,先用我们的测试程序测试

https://www.stcaimcu.com/forum.p ... &extra=page%3D1

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-30 14:38:57

25

主题

977

回帖

3599

积分

超级版主

积分
3599
发表于 2023-4-28 13:21:14 | 显示全部楼层
本帖最后由 zhp 于 2023-4-28 13:27 编辑

请参考这个帖子的范例
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=871&extra=page%3D1
刚刚已更新为使用外部32768,
在试验箱9.6上测试通过,外部32768晶振可正常起振,功能正常

外部晶振起振就这两句就可以了,没有其他设置

1.png

如果依然不行,可将你的完整测试代码打包上来,大家帮你看看

回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:18 , Processed in 0.137029 second(s), 103 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表