STC32G12K128 RTC
STC32G12K128芯片在屠龙刀上测试rtc程序,发现用外部32.768k晶振无法使用,运行到:while (!(X32KCR & 1));//等待时钟稳定就卡住了。使用内部32k晶振测试发现一切正常。屠龙刀p16,p17上已焊接32.768晶体和起振电容,不知什么原因?程序如下:
static void RTC_config()
{
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
ALAHOUR = 0; //闹钟小时
ALAMIN= 0; //闹钟分钟
ALASEC= 0; //闹钟秒
ALASSEC = 0; //闹钟1/128秒
//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 = 0x88; //中断使能, 0x80:闹钟中断, 0x40:日中断, 0x20:小时中断, 0x10:分钟中断, 0x08:秒中断, 0x04:1/2秒中断, 0x02:1/8秒中断, 0x01:1/32秒中断
RTCIEN = 0xF8; //中断使能, 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会由于设置没完成, 停止计数, 唤醒后才继续完成设置并继续计数.
}
屠龙刀上电阻R133去掉了吗?
屠龙刀出厂时是焊R133的,如果没有去掉,晶振无法起振
本帖最后由 gjf 于 2023-2-7 15:12 编辑
zhp 发表于 2023-2-7 13:58
屠龙刀上电阻R133去掉了吗?
屠龙刀出厂时是焊R133的,如果没有去掉,晶振无法起振
是这个问题,去掉电阻R133就好了,非常感谢超级版主。 除了要去掉电阻R133,还要注意32768的晶振两端的匹配电容在10~47pF之间,调整电容可以微调频率。RTC电路是稳压的,VCC电压变化不会影响频率。 梁工 发表于 2023-2-7 15:20
除了要去掉电阻R133,还要注意32768的晶振两端的匹配电容在10~47pF之间,调整电容可以微调频率。RTC电路是 ...
匹配电容焊接的是27pf,串口打印的一秒中断准吗?
收←◆Year=200,Month=1,Day=1,Hour=0,Minute=4,Second=54
收←◆Year=200,Month=1,Day=1,Hour=0,Minute=4,Second=55
收←◆Year=200,Month=1,Day=1,Hour=0,Minute=4,Second=56
收←◆Year=200,Month=1,Day=1,Hour=0,Minute=4,Second=57
收←◆Year=200,Month=1,Day=1,Hour=0,Minute=4,Second=58
收←◆Year=200,Month=1,Day=1,Hour=0,Minute=4,Second=59
收←◆Year=200,Month=1,Day=1,Hour=0,Minute=5,Second=0
RTC MIN_Flag!
收←◆Year=200,Month=1,Day=1,Hour=0,Minute=5,Second=1
收←◆Year=200,Month=1,Day=1,Hour=0,Minute=5,Second=2
收←◆Year=200,Month=1,Day=1,Hour=0,Minute=5,Second=3
收←◆Year=200,Month=1,Day=1,Hour=0,Minute=5,Second=4
收←◆Year=200,Month=1,Day=1,Hour=0,Minute=5,Second=5
收←◆Year=200,Month=1,Day=1,Hour=0,Minute=5,Second=6
收←◆Year=200,Month=1,Day=1,Hour=0,Minute=5,Second=7
收←◆Year=200,Month=1,Day=1,Hour=0,Minute=5,Second=8
收←◆Year=200,Month=1,Day=1,Hour=0,Minute=5,Second=9
收←◆Year=200,Month=1,Day=1,Hour=0,Minute=5,Second=10
gjf 发表于 2023-2-7 16:14
匹配电容焊接的是27pf,串口打印的一秒中断准吗?
收←◆Year=200,Month=1,Day=1,Hour=0,M ...
串口打印的一秒中断准吗?
不明白这一句的意思。
页:
[1]