说一不二 发表于 2026-3-5 21:41:24

RTC时钟问题

用实验箱9.62, 例程45, 运行OK, 搬到自己的LCD显示程序中,程序后半部分的delay_us(u16 us)会死机,用DEBUG跟踪到do...while(--us) 就跑飞了


void delay_us(u16 us)
{
    do
    {
      NOP(18);            //(MAIN_Fosc + 500000) / 1000000 - 6
    } while (--us);
}

是不是和堆栈有关,LCD显示有一幅静态图320240的有9600字节,显示图形时多处调用delay_us(u16 us),显示正常,
加入RTC初始化设置后就不能调用delay_us(u16 us),死机
请大佬指教

说一不二 发表于 2026-3-5 21:43:08

芯片是STC32G12K128

ercircle 发表于 2026-3-5 21:44:28

两者没有关系应该是别处引起。

哪个型号?打包发下完整工程

说一不二 发表于 2026-3-5 21:53:24

/周期性唤醒定时器设置
//中断使能, 0x80:闹钟中断, 0x40:日中断, 0x20:小时中断, 0x10:分钟中断, 0x08:秒中断, 0x04:1/2秒中断, 0x02:1/8秒中断, 0x01:1/32秒中断
//cnt:自动重装载值.减到0,产生中断.
void RTC_Set_WakeUp(u8 wksel,u8 cnt)
{   u8 temps;
                RTCIF = 0x00;   //清中断标志
    RTCIEN = 0x88;
    RTCCR = 0x01;   //RTC使能

    while(RTCCFG & 0x01);        //等待初始化完成,需要在 "RTC使能" 之后判断.
}
这个设置不能加,加了再用delay_us()就死机

说一不二 发表于 2026-3-6 22:00:07

ercircle 发表于 2026-3-5 21:44
两者没有关系应该是别处引起。

哪个型号?打包发下完整工程

打包文件再附件里

说一不二 发表于 2026-3-6 22:02:19

ercircle 发表于 2026-3-5 21:44
两者没有关系应该是别处引起。

哪个型号?打包发下完整工程

芯片STC32G12K128

ercircle 发表于 2026-3-7 15:16:02

说一不二 发表于 2026-3-6 22:02
芯片STC32G12K128

没用RTC本身的中断。借用13 user中断,但是未添加asm跳转


查看手册这个章节了解更多内容:

说一不二 发表于 2026-3-7 16:23:31

ercircle 发表于 2026-3-7 15:16
没用RTC本身的中断。借用13 user中断,但是未添加asm跳转




我查了手册,STC32G12K28芯片在手册中没给中断入口号

说一不二 发表于 2026-3-7 16:27:55

ercircle 发表于 2026-3-7 15:16
没用RTC本身的中断。借用13 user中断,但是未添加asm跳转




是这个吗:
CSEGAT   0123H
JMP         006BH
END

ercircle 发表于 2026-3-7 16:56:30

说一不二 发表于 2026-3-7 16:27
是这个吗:
CSEGAT   0123H
JMP         006BH







页: [1] 2
查看完整版本: RTC时钟问题