找回密码
 立即注册
楼主: 丽江春水

想用STC32g12k128显示实时时钟,求教

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2023-11-26 13:41:15

14

主题

87

回帖

669

积分

高级会员

积分
669
发表于 2023-1-13 20:24:35 | 显示全部楼层
看到时钟显示了,我去看看程序
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2023-11-26 13:41:15

14

主题

87

回帖

669

积分

高级会员

积分
669
发表于 2023-1-13 21:25:53 | 显示全部楼层
电子DI*** 发表于 2023-1-13 16:17
屠龙刀的代码包里的科学计算器试验里有这个时钟哦,在屏保状态下会显示时钟~有兴趣可以试试 ...

把科学计算器程序里的rtc.c和rtc.h文件拷到我自己的程序里,原来正常运行的程序,只要执行rtc.c里的设置内时钟指令,就无法运行了。也就是无法打开内部时钟。
void main()
{
unsigned  int c=0;
        mcu_initial();
        TFT089_init();
        TFT_clear();
        RTC_config();//只要执行这个函数就无法运行下去了
        c=ReadTemperature();

        digit6_display(0,32,c);

        while(1)
        {
        c=0;
                c=ReadTemperature();
                digit6_display(0,0,c);
c=SEC;
                digit6_display(0,64,c);
        }
  • 打卡等级:常住居民II
  • 打卡总天数:80
  • 最近打卡:2025-05-03 08:21:55

7

主题

22

回帖

1071

积分

金牌会员

积分
1071
发表于 2023-1-14 12:45:55 | 显示全部楼层
32G12K128,彩屏显示实时时钟,同时使用AD中断为什么会变慢呢?查询法使用AD可以。
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2023-11-26 13:41:15

14

主题

87

回帖

669

积分

高级会员

积分
669
发表于 2023-1-15 07:55:00 | 显示全部楼层
wangy*** 发表于 2023-1-14 12:45
32G12K128,彩屏显示实时时钟,同时使用AD中断为什么会变慢呢?查询法使用AD可以。 ...

求例程,我自己的程序框架可能有问题,始终玩不转切换时钟源。但找不到问题在哪,只好求助别人的例程,再移植。
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2023-11-26 13:41:15

14

主题

87

回帖

669

积分

高级会员

积分
669
发表于 2023-1-15 07:59:35 | 显示全部楼层
曾遇到这们一个情况,我自己写的两个程序,运行都正常,能实现预期结果,想把它们合成一个时,把一个程序的内容合到第二个时,出现问题,但自己找不到原因,解决不了。然后把第二个程序合到第一个时,程序能正常运行,感觉自己在某些语句的理解上存在偏差,只是总找到问题出在哪里,新人的苦呀。
  • 打卡等级:常住居民II
  • 打卡总天数:80
  • 最近打卡:2025-05-03 08:21:55

7

主题

22

回帖

1071

积分

金牌会员

积分
1071
发表于 2023-1-15 10:06:01 | 显示全部楼层
void RTC_config(void)
{
    INIYEAR = 23;
    INIMONTH = 1;
    INIDAY = 13;
    INISEC = S_SEC;          // RTC的时计数值
    INIMIN = S_MIN;          // RTC的分计数值
    INIHOUR = S_HOUR;          // RTC的秒计数值
    INISSEC = 0;
    //STC32G 芯片使用内部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 = 0x08;    //中断使能, 0x80:闹钟中断, 0x40:日中断, 0x20:小时中断, 0x10:分钟中断, 0x08:秒中断, 0x04:1/2秒中断, 0x02:1/8秒中断, 0x01:1/32秒中断
    RTCCR = 0x01;     //RTC使能
    while(RTCCFG & 0x01)
    {
        ;    //等待初始化完成,需要在 "RTC使能" 之后判断.
    }
    //设置RTC时间需要32768Hz的1个周期时间,大约30.5us. 由于同步, 所以实际等待时间是0~30.5us.
    //如果不等待设置完成就睡眠, 则RTC会由于设置没完成, 停止计数, 唤醒后才继续完成设置并继续计数.
}
/************************************************************************
*************************************************************************/
void RTC_Isr()interrupt 13
{
    if(RTCIF & 0x80)    //闹钟中断
    {
        RTCIF &= ~0x80;
        B_Alarm = 1;
    }
    if(RTCIF & 0x08)    //秒中断
    {
        RTCIF &= ~0x08;
        B_1s = 1;
    }
  
}
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2023-11-26 13:41:15

14

主题

87

回帖

669

积分

高级会员

积分
669
发表于 2023-1-15 18:52:24 | 显示全部楼层
本帖最后由 丽江春水 于 2023-1-15 18:55 编辑

多谢,已复制,利用过节时间好好研究一下,可惜是外部晶振,我手里没有这个频率的晶振,没法试。
  • 打卡等级:偶尔看看III
  • 打卡总天数:56
  • 最近打卡:2025-05-03 10:05:34

718

主题

1万

回帖

1万

积分

管理员

积分
15648
发表于 2023-1-15 18:58:23 | 显示全部楼层
内部那个 32K, 是 20K ~ 40K 的掉电唤醒定时器用的 LIRC时钟,你可以用来 测试,实际用 RTC, 必须外部32768
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2023-11-26 13:41:15

14

主题

87

回帖

669

积分

高级会员

积分
669
发表于 2023-1-15 21:28:17 | 显示全部楼层
神*** 发表于 2023-1-15 18:58
内部那个 32K, 是 20K ~ 40K 的掉电唤醒定时器用的 LIRC时钟,你可以用来 测试,实际用 RTC, 必须外部32768 ...

谢谢,这个事我没想到,我的外部时钟用了11M的,没法用32K了
  • 打卡等级:偶尔看看III
  • 打卡总天数:56
  • 最近打卡:2025-05-03 10:05:34

718

主题

1万

回帖

1万

积分

管理员

积分
15648
发表于 2023-1-15 21:37:55 | 显示全部楼层
你外部11M, RTC 就不要考虑用了; 用RTC, 则CPU用内部时钟
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-5-4 04:13 , Processed in 0.146180 second(s), 101 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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