ZhangChYu 发表于 2024-5-31 08:59:28

乘风飞扬 发表于 2024-5-30 17:28
RTC的中断可以唤醒休眠状态。
printf函数 %bd 就是将数据以十进制格式输出,用文本模式就可以正常显示。 ...

还有 进入休眠 这个RTC好像不会跑 这个大概会增加多少静态电流

乘风飞扬 发表于 2024-5-31 09:14:35

ZhangChYu 发表于 2024-5-31 08:59
还有 进入休眠 这个RTC好像不会跑 这个大概会增加多少静态电流

除了掉电唤醒定时器外,其他所有唤醒方式都是靠中断,一旦关闭中断就失去唤醒功能。
进入休眠RTC会继续工作,规格书RTC章节有介绍,开启RTC低功耗状态下,单片机工作电流也就2~3uA:


至于数据格式,范例程序里面有介绍一种将数据以十进制方式显示的方法:


ZhangChYu 发表于 2024-5-31 09:25:25

乘风飞扬 发表于 2024-5-31 09:14
除了掉电唤醒定时器外,其他所有唤醒方式都是靠中断,一旦关闭中断就失去唤醒功能。
进入休眠RTC会继续工 ...

    P_SW2 |= 0x80;
    //选择内部低速IRC
    IRC32KCR = 0x80;                                                               //启动内部低速振荡器
    while (!(IRC32KCR & 0x01));                                                   //等待时钟稳定
    RTCCFG |= 0x02;                                                                //选择内部低速IRC作为RTC时钟源
   
    INIYEAR= 24;                                                                            //Y:2021
    INIMONTH= 01;                                                                        //M:12
    INIDAY= 01;                                                                               //D:31
    INIHOUR= 8;                                                                           //H:23
    INIMIN= 0;                                                                               //M:59
    INISEC= 0;                                                                               //S:50
    INISSEC= 0;                                                                               //S/128:0
    RTCCFG|= 0x01;                                                                        //触发RTC寄存器初始化
    RTCIF= 0;                                                                                 //清中断标志
    RTCIEN = 0x10;                                                                        //使能RTC分钟中断
    RTCCR= 0x01;                                                                            // RTC使能


是复位了 好像是看门狗复位 2S时间应该不至于 进入大循环前加了这个就会

小涵子爸爸 发表于 2024-5-31 10:00:23

感谢分享

乘风飞扬 发表于 2024-5-31 13:13:56

ZhangChYu 发表于 2024-5-31 09:25
P_SW2 |= 0x80;
    //选择内部低速IRC
    IRC32KCR = 0x80;                                    ...

RTC中断函数写了吗?
如果是借用13号中断向量的话,中断映射程序 isr.asm 文件是否加载到项目里了?

ZhangChYu 发表于 2024-5-31 15:48:50

乘风飞扬 发表于 2024-5-31 13:13
RTC中断函数写了吗?
如果是借用13号中断向量的话,中断映射程序 isr.asm 文件是否加载到项目里了? ...

写了的 也有清中断
    if( (RTCIF&0x08) )
    {
      /*RTC中断 */
      RTCIF &= ~0x08;

昨天还不会复位今天就一致会

ZhangChYu 发表于 2024-5-31 15:54:35

乘风飞扬 发表于 2024-5-31 13:13
RTC中断函数写了吗?
如果是借用13号中断向量的话,中断映射程序 isr.asm 文件是否加载到项目里了? ...

关掉RTC中断也会复位

乘风飞扬 发表于 2024-5-31 15:57:07

本帖最后由 乘风飞扬 于 2024-5-31 15:58 编辑

ZhangChYu 发表于 2024-5-31 15:54
关掉RTC中断也会复位
用硬件仿真查一下程序,实在找不到问题的话,就提供最简的可以复现问题的完整项目。
页: 1 [2]
查看完整版本: 有没有内部RTC的例程