丽江春水
发表于 2023-1-13 20:24:35
看到时钟显示了,我去看看程序
丽江春水
发表于 2023-1-13 21:25:53
电子DIY小家 发表于 2023-1-13 16:17
屠龙刀的代码包里的科学计算器试验里有这个时钟哦,在屏保状态下会显示时钟~有兴趣可以试试 ...
把科学计算器程序里的rtc.c和rtc.h文件拷到我自己的程序里,原来正常运行的程序,只要执行rtc.c里的设置内时钟指令,就无法运行了。也就是无法打开内部时钟。
void main()
{
unsignedint 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);
}
wangyifan
发表于 2023-1-14 12:45:55
32G12K128,彩屏显示实时时钟,同时使用AD中断为什么会变慢呢?查询法使用AD可以。
丽江春水
发表于 2023-1-15 07:55:00
wangyifan 发表于 2023-1-14 12:45
32G12K128,彩屏显示实时时钟,同时使用AD中断为什么会变慢呢?查询法使用AD可以。 ...
求例程,我自己的程序框架可能有问题,始终玩不转切换时钟源。但找不到问题在哪,只好求助别人的例程,再移植。
丽江春水
发表于 2023-1-15 07:59:35
曾遇到这们一个情况,我自己写的两个程序,运行都正常,能实现预期结果,想把它们合成一个时,把一个程序的内容合到第二个时,出现问题,但自己找不到原因,解决不了。然后把第二个程序合到第一个时,程序能正常运行,感觉自己在某些语句的理解上存在偏差,只是总找到问题出在哪里,新人的苦呀。
wangyifan
发表于 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;
}
}
丽江春水
发表于 2023-1-15 18:52:24
本帖最后由 丽江春水 于 2023-1-15 18:55 编辑
多谢,已复制,利用过节时间好好研究一下,可惜是外部晶振,我手里没有这个频率的晶振,没法试。
神农鼎
发表于 2023-1-15 18:58:23
内部那个 32K, 是 20K ~ 40K 的掉电唤醒定时器用的 LIRC时钟,你可以用来 测试,实际用 RTC, 必须外部32768
丽江春水
发表于 2023-1-15 21:28:17
神农鼎 发表于 2023-1-15 18:58
内部那个 32K, 是 20K ~ 40K 的掉电唤醒定时器用的 LIRC时钟,你可以用来 测试,实际用 RTC, 必须外部32768 ...
谢谢,这个事我没想到,我的外部时钟用了11M的,没法用32K了
神农鼎
发表于 2023-1-15 21:37:55
你外部11M, RTC 就不要考虑用了; 用RTC, 则CPU用内部时钟