一个简单问题,竟然出错,反而没办法
实际结果 LED3 怎么也不亮,似乎RTC中断没有进入
https://www.stcaimcu.com/data/download/Datasheet/STC32G.pdf
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;
// }
}
RTC的中断号超过了31,需要使用扩展插件处理一下
深圳国芯人工智能有限公司-工具软件
已经解决了,谢谢各位!
都是对的,缺少一个
EA = 1; //打开总中断
页:
[1]