shaw 发表于 2025-7-14 16:31:26

一个简单问题,竟然出错,反而没办法



实际结果 LED3 怎么也不亮,似乎RTC中断没有进入

神农鼎 发表于 2025-7-14 16:39:02



https://www.stcaimcu.com/data/download/Datasheet/STC32G.pdf

DebugLab 发表于 2025-7-14 16:57:01

RTC初始化:
P_SW2|=EAXFR;
P1M1=0xC0;      P1M0=0x00;      //设置IO模式(晶振IO高阻)
X32KCR=0x80;                        //启动外部32.768KHz晶振
while(!(X32KCR&0x01));      //等待外部32.768KHz晶振稳定
RTCCFG=0x00;                        //RTC选择外部32.768KHz时钟源
INIYEAR                =25;      //初始化年
INIMONTH      =1;                //初始化月
INIDAY                =1;                //初始化日
INIHOUR                =0;                //初始化时
INIMIN                =0;                //初始化分
INISEC                =0;                //初始化秒
INISSEC                =0;                //初始化1/128秒
INIWEEK                =3;                //初始化星期
RTCCFG|=0x01;                //初始化RTC
RTCIF=0x00;                //清除RTC中断标志
RTCIEN=0x08;      //启用RTC秒中断
RTCCR=0x01;                //打开RTC
EA=1;                        //启用总中断RTC中断:
void RTC_Isr(void) interrupt RTC_VECTOR
{
//      if(RTCIF&0x80)      //闹钟中断
//      {
//                RTCIF&=~0x80;
//      }
//      if(RTCIF&0x40)      //日中断
//      {
//                RTCIF&=~0x40;
//      }
//      if(RTCIF&0x20)      //时中断
//      {
//                RTCIF&=~0x20;
//      }
//      if(RTCIF&0x10)      //分中断
//      {
//                RTCIF&=~0x10;
//      }
      if(RTCIF&0x08)      //秒中断
      {
                RTCIF&=~0x08;
                RTC_1s_Flag=1;
      }
//      if(RTCIF&0x04)      //1/2秒中断
//      {
//                RTCIF&=~0x04;
//      }
//      if(RTCIF&0x02)      //1/8秒中断
//      {
//                RTCIF&=~0x02;
//      }
//      if(RTCIF&0x01)      //1/32秒中断
//      {
//                RTCIF&=~0x01;
//      }
}

晓飛飛 发表于 2025-7-14 22:02:30

RTC的中断号超过了31,需要使用扩展插件处理一下



深圳国芯人工智能有限公司-工具软件

shaw 发表于 2025-7-16 08:37:35

已经解决了,谢谢各位!
都是对的,缺少一个
   EA = 1;   //打开总中断
页: [1]
查看完整版本: 一个简单问题,竟然出错,反而没办法