查看: 3739|回复: 0

[原创] 【野火i.MX RT1052】10.i.Maxrt1052之RTC显示

[复制链接]
  • TA的每日心情
    擦汗
    2019-6-26 20:59
  • 签到天数: 235 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2018-6-16 17:21:14 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 小马哥-1650185 于 2018-6-16 17:33 编辑

    先来看下效果图吧
    1529140711270mz147.gif 1529140635523mz123.gif

    本帖子主要是在前面lcd驱动显示的基础上啊增加了RTC实时时钟功能,并通过lcd显示出来,同事串口是每秒打印一次时间。

    SNVS 是 DCP 模块的配套模块。 SNVS 包含安全和非安全功能。 本文档中描述了 SNVS非安全功能,但仅在《Security Reference Manual》中描述了 SNVS 安全功能。  


    SNVS 实现了几个涉及软件交互的非安全功能:
     1. 读取或写入实时计数器(RTC)(这是非特权操作) - 软件还可以指示 SNVS 将当前的 SRTC 值加载到 RTC;
     2. 读写通用寄存器(GPR)(如果 LP 时钟与 HP 时钟不同,则在 LP 部分读或写寄存器时可能会有明显延迟)。  


    特性:
     RTC,软件可配置的实时时钟模块;
     周期中断,软件可配置中断间隔时间;
     通用存储器,用于存储 128 bits 的数据,如果 SNVS_LP 电源输入连接到不间断电源,例如纽扣电池,当主 SoC 断电时, GPR 值保持不变;
     芯片开机/关机,如果 SNVS_LP 电源输入连接到不间断电源,同时开机按钮输入信号连接到一个芯片外部的电源按钮, SNVS_LP 内部的逻辑可以用来唤醒芯片从掉电。  


    RTC 配置步骤:
     使能时钟;
     配置 RTC 校准值和周期中断间隔;
     设置年月日, 启动计数器;
     设置闹钟时间;
     使能 RTC 闹钟中断。

    获取 SNVS 默认配置信息结构体参数并利用该结构体初始化 SNVS*
    1. <div>     SNVS_HP_RTC_GetDefaultConfig(&snvsRtcConfig);</div><div>    SNVS_HP_RTC_Init(SNVS, &snvsRtcConfig);</div>
    复制代码




    配置 RTC 数据结构体参数


    1.     rtcDate.year = 2018U;
    2.     rtcDate.month = 06U;
    3.     rtcDate.day = 16U;
    4.     rtcDate.hour = 17U;
    5.     rtcDate.minute = 0;
    6.     rtcDate.second = 0;
    复制代码
    将RTC时间设置为默认时间和日期并启动RTC
    1.     SNVS_HP_RTC_SetDatetime(SNVS, &rtcDate);
    2.     SNVS_HP_RTC_StartTimer(SNVS);
    复制代码


    在循环中获取当前时间,一秒刷新一次lcd显示,1秒通过串口打印一次时间。

    1. while(1)
    2.     {
    3.         
    4.                         /* 获取日期 */
    5.         SNVS_HP_RTC_GetDatetime(SNVS, &rtcDate0);

    6.                         if(rtcDate0.second != old_second)
    7.                         {
    8.         
    9.                                                                 /*使用c标准库把变量转化成字符串*/
    10.                                 sprintf(buf,"%04hd-%02hd-%02hd %02hd:%02hd:%02hd       ", rtcDate0.year, rtcDate0.month, rtcDate0.day,
    11.                rtcDate0.hour, rtcDate0.minute, rtcDate0.second);
    12.                                
    13.                                 /*然后显示该字符串即可,其它变量也是这样处理*/
    14.                                 LCD_DispString(100,200,(uint8_t* )buf);
    15. //                                LCD_DisplayStringLine(LINE(5),(uint8_t* )buf);
    16.                                
    17.                                
    18.                                 /* 打印默认时间 */
    19.         PRINTF("当前时间: %04hd-%02hd-%02hd %02hd:%02hd:%02hd\r\n", rtcDate0.year, rtcDate0.month, rtcDate0.day,
    20.                rtcDate0.hour, rtcDate0.minute, rtcDate0.second);
    21.                                
    22.                                 old_second = rtcDate0.second;
    23.                         }
    24.     }
    复制代码
    串口打印为

    QQ截图20180616172326.jpg


    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-19 07:55 , Processed in 0.102621 second(s), 15 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.